Tag: 条件渲染

JSTL c:如果在JSF h:dataTable中不起作用

我试图在状态完成时使用<c:if>来有条件地在<h:dataTable>放置一个<h:outputLink> 。 <h:dataTable value="#{bean.items}" var="item" width="80%"> <h:column> <f:facet name="header"> <h:outputText value="State" /> </f:facet> <c:if test="#{item.state != 'Finish'}"> <h:outputText value="Missing value" /> </c:if> <c:if test="#{item.state == 'Finish'}"> <h:outputLink value="myLink"> <h:outputText value="Value = #{item.state}" /> </h:outputLink> </c:if> </h:column> </h:dataTable> 但是这不起作用,为什么是这样,我该如何解决?

有条件地显示JSF组件

首先,我是Java EE新手,来自强大的ASP .NET开发背景。 我已经通过networking,我可能会错过这个,但似乎没有简单的和直接的关于如何将支持bean类连接到JSF组件的教程。 一个很好的例子是这样的,目前我正在尝试创build一个JSF页面,其中有一组链接作为菜单栏和一组表单。 我打算做的是,点击一个链接时,会呈现一个特定的表单。 在ASP.NET中,我可以轻松地检索元素,然后将该属性设置为可显示。 我想知道是否有简单的方法(甚至任何方式)在JSF中做到这一点。 表单已经在页面中,只要点击一个特定的链接就可以将“render”属性设置为true。

为什么我需要在另一个组件中使用rendered =“#{some}”嵌套一个组件,当我想要更新它时?

所以我发现了几个答案,我已经find了足够的解决我所遇到的问题。 但是,即使如此,我也很好奇为了解这个问题。 让我以一个例子来说明: 我有一个facelet .xhtml页面,看起来像这样(缩短)。 <h:form id="resultForm"> <h:panelGroup class="search_form" layout="block"> <h:inputText id="lastname" value="#{search.lastname}"/> <h:commandButton action="#{search.find}" value="Find"> <f:ajax execute="lastname" render="resultDisplay"/> </h:commandButton> </h:panelGroup> <h:dataTable value="#{search.searchResults}" var="results" id="resultDisplay" rendered="#{!empty search.searchResults}"> <h:column> #{results.field} </h:column> </h:dataTable> </h:form> 现在,为了简洁起见,我不会发布所有的支持bean代码,但是我有这样的一些东西: public void find() { searchResults = setResults(true); } 其中searchResults是一个ArrayList<Objects> 。 search后,它不是空 – 在多个testing中检查(可以为空,但不是在我正在做的testing)。 现在。 这是行不通的。 但是,如果我把dataTableembedded另一个,让我们说panelGroup ,它将工作。 <h:panelGroup id="resultDisplay"> <h:dataTable value="#{search.searchResults}" var="results" […]