我試圖從現有的Primefaces組件構建自定義組件,我需要一些幫助。我有一個selectOneMenu,我希望它根據在菜單中選擇哪個選項來呈現或不呈現(以及禁用或啓用)其他組件。這裏的困難之處在於我無法使用託管Bean(我有幾個原因),我需要一個純粹的xhtml代碼。有條件呈現取決於p:selectOneMenu值
我嘗試了一些<c:choose>
和<ui:parameter>
東西來創建布爾值,但由於某種原因,我看不到它不工作。你們可以看看我的代碼,看看你有什麼想法嗎?這可能是一件簡單的事,我無法想象或者我還不知道的事情。
<h:body>
<h:form id="abc">
<ui:repeat var="pd" value="#{produtoMB.produtos}">
<h:panelGroup id="linha">
<c:choose>
<c:when test="#{pd.marca == X1}">
<c:set var="render" value="#{true}" />
</c:when>
<c:otherwise>
<c:set var="render" value="#{false}" />
</c:otherwise>
</c:choose>
<p:selectOneMenu value="#{pd.marca}">
<f:selectItem itemLabel="Select One" itemValue="" noSelectionOption="true"/>
<f:selectItem itemLabel="Xbox One" itemValue="X1" />
<f:selectItem itemLabel="PlayStation 4" itemValue="PS4" />
<f:selectItem itemLabel="Wii U" itemValue="WU" />
<p:ajax update="linha" />
</p:selectOneMenu>
<p:inputText value="#{pd.aparelho}" disabled="#{render}"/>
<h:outputText value="Microsoft" rendered="#{render}"/>
<p:commandButton value="X" />
</h:panelGroup>
<br />
</ui:repeat>
<br />
<p:commandButton actionListener="#{produtoMB.botaoMais}" value="+" update="abc"/>
<p:commandButton actionListener="#{produtoMB.botaoMenos}" value="-" update="abc"/>
</h:form>
Balus,非常感謝你的回答。這確實是一個更有意義的解決方案(出於某種原因,我甚至沒有考慮過在每個「禁用」和「渲染」屬性中寫入條件的想法。在得到您的答案之前,我注意到了EL表達式中的錯誤,但也要感謝你!我真的很喜歡按照我的想法工作,但我們今生不可能擁有我們想要的,對吧?;-)非常感謝你,你救了我一天! –
不客氣。 – BalusC
Baulus,你認爲可能有辦法創建布爾變量並按照我第一次使用它們的方式使用它們,也許使用不同於JSTL標籤的東西?只是一個好奇心:我現在解決了我的問題,但我想到了不同的場景,我需要回到我原來的想法...... –