好吧,我有一个带有很多按钮的表单,当用户单击按钮时,必须在 ManagedBean 中执行某些方法,这是一个“疯狂”的逻辑。所以我有两个解决方案,我想知道你的建议:
第一个解决方案
<p:commandButton actionListener="#{myBean.someMethod}" value="Execute method 1" process="@this" />
public void someMethod(ActionEvent event){
if (selectedCustomer){
myCrazyLogicHere();
RequestContext.getCurrentInstance().update("formAlternative:componentToUpdate");
RequestContext.getCurrentInstance().execute("someAlternativeDialog.show()");
}else{
addErrorMessage("Select a Customer before click on Method 1");
}
}
第二种解决方案
<p:commandButton actionListener="#{myBean.someMethod}" update=":formAlternative:componentToUpdate" oncomplete="someAlternativeDialog.show()" value="Execute Method 1" />
public void someMethod(ActionEvent event){
if (selectedCustomer){
myCrazyLogicHere();
}else{
addErrorMessage("Select a Customer before click on Method 1");
}
}
所以,我在“第二个解决方案”中有一个问题。当 commandButton 完成您的循环时,它将执行“someAlternativeDialog.show()”,我需要为此设置一个条件,如果“selectedCustomer”为真,则显示对话框。在“第一个解决方案”中,这个问题已经解决了,因为我在 ManagedBean 中做所有事情,JSF 只是调用该方法。
所以,我的疑问是:最好的工作形式是什么?如果表格 2 更好,我该如何调节对话框显示?