我有几个 JSF 页面有一个 PrimeFaces 对话框来创建一个Person
. 因为此对话框包含文件上传,所以我不想使用 AJAX。对话框将在创建时关闭Person
。如果Person
未创建(验证失败或其他),则应显示对话框。
我见过人们使用visible="#{not empty facesContext.messages}"
,但是我不能使用它,因为被调用的方法FacesMessage
在任何情况下都会返回 a 。
我现在的想法是生成一个视图参数(例如 showDialog)并使用visible="#{param.showDialog}"
.
我尝试过使用导航案例,但由于该方法是从多个页面调用的,因此我无法制作仅添加视图参数的通用导航案例。这将是一个想法:
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-action>#{personBean.create}</from-action>
<from-outcome>true</from-outcome>
<to-view-id>#{from-view-id}</to-view-id>
<redirect>
<view-param>
<name>showDialog</name>
<value>#{form-outcome}</value>
</view-param>
</redirect>
</navigation-case>
</navigation-rule>
使用导航案例的另一个问题是对话框是一个复合标记,并且使用属性提供操作。当我确实使用上述导航箱时,我收到一条消息说Unable to find matching navigation case with from-view-id '/test.xhtml' for action '#{cc.attrs.saveAction}' with outcome 'true'
。
我认为最好/最简单的解决方案是在方法中添加视图参数。但是,requestmap 是不可变的,并且返回包含的 String?showDialog=true
也不起作用。