Ответ 1
Нет, к сожалению, нет такого тега, как <f:viewParams>
. Там также есть комментарий в Mojarra UIViewParameter#decode()
реализация (это код, расположенный за тегом <f:viewParam>
), который подтверждает, что:
@Override
public void decode(FacesContext context) {
if (context == null) {
throw new NullPointerException();
}
// QUESTION can we move forward and support an array? no different than UISelectMany; perhaps need to know
// if the value expression is single or multi-valued
// ANSWER: I'd rather not right now.
String paramValue = context.getExternalContext().getRequestParameterMap().get(getName());
// submitted value will stay as previous value (null on initial request) if a parameter is absent
if (paramValue != null) {
setSubmittedValue(paramValue);
}
rawValue = (String) getSubmittedValue();
setValid(true);
}
В настоящий момент лучше всего это сделать, собрав значения из ExternalContext#getRequestParameterValuesMap()
в @PostConstruct
или <f:viewAction>
или, возможно, в @ManagedProperty("#{paramValues.state}")
в свойстве String[]
.
Вы также можете создать пользовательский тег <my:viewParams>
, который достигнет этого, но это не совсем тривиально.