【发布时间】:2018-07-13 10:56:12
【问题描述】:
在我的项目中,我有一个命令链接,其中“目标”属性值设置为“_blank”。因此,如果出现验证错误,它将打开一个新窗口并显示错误消息。
但要求是,如果验证正确,则应针对新窗口,否则它将保留在同一页面并显示错误消息。
现有代码:
<p:commandLink value="View"
styleClass="view_link"
ajax="false"
action="#{bean.someMethod('preview')}"
target ="_blank" />
我的解决方案:
<p:commandLink value="View"
styleClass="view_link"
ajax="false"
action="#{bean.someMethod('preview')}"
target="#{bean.target}">
<p:ajax listener="#{bean.handelAjaxBehavoiurEvent}"/>
</p:commandLink>
在listner 方法中,我正在验证表单并为p:commandlink 设置目标值。但它不起作用。
预期结果:当我点击链接时,它应该验证表单值。如果值正确,则在浏览器中打开一个新选项卡并预览 pdf 文件。否则在现有页面上显示错误消息。
这就是为什么在检查链接本身时它会打开新链接。我想在表单验证后设置目标属性的值。
【问题讨论】:
-
我绝对知道为什么你上面的解决方案不起作用,但我必须想一个聪明的方法来做你想做的事。
-
@Melloware - 我有一个素面对话,里面有这个命令链接。当我单击命令链接时,我想验证表单数据。如果数据有效,那么它应该打开一个新选项卡并显示 PDF。否则它将在现有对话中显示错误消息。我从托管 bean 执行了一个 JavaScript 函数,并将 PDF 数据作为 base64 编码数据发送。但我需要一个更好的选择。
标签: primefaces jsf-2 commandlink