我有几个JSF页面有一个PrimeFaces对话框来创建一个Person
。由于此对话框包含文件上传,我不想使用AJAX。当创建Person
时,该对话框将被关闭。如果没有创建Person
(验证失败或其他),则应显示该对话框。在非Ajax请求后保持对话框打开
我见过人们用visible="#{not empty facesContext.messages}"
这样做,但是我不能使用它,因为在任何情况下调用的方法都会返回FacesMessage
。
我现在的想法是生成一个视图参数(例如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是不可变的,返回一个包含?showDialog=true
的字符串也不起作用。
的例子,我的情况之间的主要区别是,我没有使用AJAX。否则我不会在这里发布问题;-) – siebz0r