<f:param>
внутри <h:commandButton>
поддерживается только с JSF 2.0, но вы используете JSF 1.2.<f:param>
поддерживается только в <h:commandLink>
.
<h:commandLink action="#{myBean.myAction}" value="Send">
<f:param name="myFlag" value="true" />
</h:commandLink>
Существуют альтернативы, такие как <h:inputHidden>
или <f:setPropertyActionListener>
или <f:attribute>
или в этом случае, возможно, просто обычный <input type="hidden">
(скрытый компонент ввода и слушатель действия будут устанавливать только своизначение во время обновления значений модели, которое является более поздним, чем этап проверки; тег атрибута лучше устанавливать в компоненте, который вызывает валидатор).Поскольку функциональные требования неясны, невозможно предложить лучшую альтернативу.
Обновление в соответствии с комментариями, очевидно, все, что вам нужно знать, это если нажата конкретная кнопкаили нет;в этом случае просто дайте ему и родительской форме фиксированный идентификатор
<h:form id="form">
<h:commandButton id="send" ...>
таким образом, у него будет фиксированное имя параметра запроса form:send
, и вы можете проверить это в валидаторе:
if (externalContext.getRequestParameterMap().containsKey("form:send")) {
// Send button is pressed.
}
Кстати, вы также можете проверить это в валидаторах required
следующим образом:
<h:inputText ... required="#{not empty param['form:send']}" />
См. Также: