【发布时间】:2012-09-08 17:44:09
【问题描述】:
我有几个 JSF 页面有一个 PrimeFaces 对话框来创建一个Person。因为此对话框包含文件上传,所以我不想使用 AJAX。创建Person 时将关闭该对话框。如果未创建 Person(验证失败或其他),则应显示对话框。
我见过有人使用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 的字符串也不起作用。
【问题讨论】:
标签: jsf navigation primefaces