Jsf p:remoteCommand返回<;评估>;两次ajax响应
我尝试在新窗口(或选项卡)中使用从自动完成组件中的选定页面对象获得的链接呈现新页面。 在尝试了多个选项之后,我认为唯一的机会是使用javascript捕获提交,触发一个远程命令,该命令使用页面对象的link属性调用javascript JSF Snipplet(在自动完成中减少属性) 行动的一部分Jsf p:remoteCommand返回<;评估>;两次ajax响应,jsf,primefaces,Jsf,Primefaces,我尝试在新窗口(或选项卡)中使用从自动完成组件中的选定页面对象获得的链接呈现新页面。 在尝试了多个选项之后,我认为唯一的机会是使用javascript捕获提交,触发一个远程命令,该命令使用页面对象的link属性调用javascript JSF Snipplet(在自动完成中减少属性) 行动的一部分 public void showPage() { RequestContext context = RequestContext.getCurrentInstance(); conte
public void showPage() {
RequestContext context = RequestContext.getCurrentInstance();
context.execute("openLink('" + selectedPage.getLink() + ".xhtml')");
}
一切都很好地协同工作,但响应包含eval标记两次
<partial-response>
<changes>
<update id="javax.faces.ViewState"><![CDATA[2851816213645347690:-2276123702509360418]]></update>
<eval><![CDATA[openLink('target.xhtml');]]></eval>
<eval><![CDATA[openLink('target.xhtml');]]></eval>
</changes>
</partial-response>
我尝试了不同的重定向或返回视图名称的方法,但都没有令人满意的解决方案(例如URL未更改或没有新窗口)。问题解决:
我以前在faces配置中定义过PrimePartialViewContextFactory
:
<factory>
<partial-view-context-factory>org.primefaces.context.PrimePartialViewContextFactory</partial-view-context-factory>
</factory>
org.primefaces.context.PrimePartialViewContextFactory
通过删除它,应用程序的行为与预期的一样
这也解决了数据表中分页和排序的问题(JSON.parse:JSON数据后意外的非空白字符
)
<partial-response>
<changes>
<update id="javax.faces.ViewState"><![CDATA[2851816213645347690:-2276123702509360418]]></update>
<eval><![CDATA[openLink('target.xhtml');]]></eval>
<eval><![CDATA[openLink('target.xhtml');]]></eval>
</changes>
</partial-response>
<factory>
<partial-view-context-factory>org.primefaces.context.PrimePartialViewContextFactory</partial-view-context-factory>
</factory>