Я предполагаю, что вы используете JSF 1.x, иначе этот вопрос не имеет смысла.<f:param>
в <h:commandButton>
действительно не поддерживается в устаревшем JSF 1.x, но поддерживается начиная с JSF 2.0.
<f:attribute>
может использоваться в сочетании с actionListener
.
<h:commandButton action="connectedFilein" actionListener="#{bean.listener}">
<f:attribute name="fileId" value="#{fileRecord.fileId}" />
</h:commandButton>
с
public void listener(ActionEvent event) {
this.fileId = (Long) event.getComponent().getAttributes().get("fileId");
}
(при условии, что он имеет значение Long
тип, который является классическим для идентификатора)
Однако лучше использовать представленный JSF 1.2 <f:setPropertyActionListener>
.
<h:commandButton action="connectedFilein">
<f:setPropertyActionListener target="#{bean.fileId}" value="#{fileRecord.fileId}" />
</h:commandButton>
Или когда выЕсли вы уже используете контейнер с сервлетом 3.0 / EL 2.2 (Tomcat 7, Glassfish 3 и т. д.), и ваш web.xml
объявлен как Servlet 3.0, вы можете просто передать его в качестве аргумента метода.
<h:commandButton action="#{bean.show(fileRecord.fileId)}" />
с
public String show(Long fileId) {
this.fileId = fileId;
return "connectedFilein";
}
Вне зависимости от конкретной проблемы, я настоятельно рекомендую использовать теги JSF / Facelets вместо тегов JSTL , когда это возможно .
<ui:fragment rendered="#{bean.fileId != null}">
<ui:include src="fileOut.xhtml" id="searchOutResults"/>
</ui:fragment>
(A <h:panelGroup>
также возможен и наилучший подход при использовании JSP вместо Facelets)