Я пытаюсь создать пользовательский компонент из существующих компонентов Primefaces, и мне нужна помощь здесь. У меня есть selectOneMenu, и я хочу, чтобы он отображал или нет (и отключает или разрешает) другие компоненты, в зависимости от того, какой параметр выбран в меню. Трудно здесь, что я не могу сделать это, используя Managed Bean (у меня есть несколько причин для этого), мне нужен чистый xhtml-код.Условно рендеринг зависит от p: selectOneMenu value
Я пробовал кое-какие <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? Просто любопытство: я решил проблему сейчас, но я думаю о разных сценариях, в которых мне нужно будет вернуться к моей оригинальной идее ... –