Jsf 两个不同h:commandButton操作的条件呈现
使用的技术: JSF2 素面 问题陈述:Jsf 两个不同h:commandButton操作的条件呈现,jsf,jstl,commandbutton,conditional-rendering,ajax-update,Jsf,Jstl,Commandbutton,Conditional Rendering,Ajax Update,使用的技术: JSF2 素面 问题陈述: <h:commandButton id="one" value="Submit" onClick="openPopup" rendered="#{bean.render}"> <h:commandButton id="two" value="Submit" action="#{bean.businessAction}" rendered="#{bean.render}"> 我们有一个下拉列表,如下所示- <h:select
<h:commandButton id="one" value="Submit" onClick="openPopup" rendered="#{bean.render}">
<h:commandButton id="two" value="Submit" action="#{bean.businessAction}" rendered="#{bean.render}">
我们有一个下拉列表,如下所示-
<h:selectOneMenu value ="#{bean.value}">
<f:ajax event="change" listener="#{bean.processValue}"
render="{one,two or panel}" /> //render correct id based on approach
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
<f:selectItem itemValue = "3" itemLabel = "Item 3" />
<f:selectItem itemValue = "4" itemLabel = "Item 4" />
</h:selectOneMenu>
其中#{bean.render}
将检查单击的项的值并返回true/false
使用JSTL实现第二种方法:
<h:commandButton id="one" value="Submit" onClick="openPopup" rendered="#{bean.render}">
<h:commandButton id="two" value="Submit" action="#{bean.businessAction}" rendered="#{bean.render}">
将两个按钮包裹在同一个panelGrid中,并仅渲染panelGrid。在panelGrid中使用JSTL控制渲染
<h:panelGrid id="panel">
<c:choose>
<c:when test = "${itemVlaue == 2}"> // use appropriate EL expression
<!-- render command button 1 to open pop up -->
</c:when>
<c:when test = "${itemVlaue == 1 or 3 or 5 }"> // use appropriate EL expression
<!-- render command button 2 to invoke action -->
</c:when>
</c:choose>
</h:panelGrid>
//使用适当的EL表达式
//使用适当的EL表达式
我在互联网上搜索过,第一种方法似乎更正确,因为不建议在JSF中使用JSTL来控制渲染
<h:panelGrid id="panel">
<c:choose>
<c:when test = "${itemVlaue == 2}"> // use appropriate EL expression
<!-- render command button 1 to open pop up -->
</c:when>
<c:when test = "${itemVlaue == 1 or 3 or 5 }"> // use appropriate EL expression
<!-- render command button 2 to invoke action -->
</c:when>
</c:choose>
</h:panelGrid>
但问题是:
当只使用一个命令按钮时,我们最终创建了两个命令按钮
另外,如果两个命令按钮只需要一个id怎么办。这是唯一一个在任何时间点都应该在场的人
请告知您的Y型问题的答案如下:
<h:selectOneMenu value="#{bean.value}">
...
<f:ajax listener="#{bean.processValue}" render="oneAndOnly" />
</h:selectOneMenu>
...
<h:commandButton id="oneAndOnly" value="Submit"
onclick="#{bean.render ? 'openPopup();return false;' : ''}"
action="#{bean.businessAction}">
</h:commandButton>
...
...
换句话说,只要让它有条件地呈现onclick属性本身,它返回
false
您的问题确实令人困惑。该标记仅在JSF2.0中引入。但是将JSTL与JSF混合时的问题只适用于JSF1.x。你真正使用的是哪个JSF版本?@Balusc-我的错误。我已经更新了问题。我们只使用JSF2。这里的要点是渲染组件的最佳方式是什么?使用JSTL或JSF机制。使用前面提到的JSF机制的影响。使用相同的命令按钮打开弹出窗口并调用操作是惊人的。我想不起来了。再次非常感谢