我试图在我的应用程序中实现primefaces的RemoteCommand标记,但不知怎么的,它并不像文档所说的那样工作。
我想要实现的东西:我有几个具有不同布局的页面,但它们都使用相同的模板。(基本上模板的内容发生了变化)。但是,不同的页面应该一个接一个地、一个接一个地自动加载,间隔在彼此之间。
<p:remoteCommand name="remoteSwitchPage" actionListener="#{circuitBean.redirect()}" autoRun="false"/>这是我的JSF代码,should为我提供了一个名为remoteSwitchPage()的JavaScript方法,但没有!也应该运行not,因为我已经说过autoRun="false",但是在加载时运行!在调用方法remoteSwitchPage()之后,它应该通过Java呈现另一个页面(这个实际上有效)。不管怎么说,JSF在去掉括号时都找不到重定向方法,这就是为什么我把它们放在这里的原因)。
总结如下:
remoteSwitchPage()should not!resize()你们知道我在这里做错了什么吗?
我用的是primefaces 4.0和JSF 2.1
发布于 2014-02-22 00:51:48
解决了
就像Simegos邮报的评论中所说的那样。
我创建了一个隐藏按钮,它每隔X秒由JavaScript点击一次。单击按钮后呈现的每个页面都需要实现以下代码。理想的做法是将代码放在一个模板中,所有呈现的页面都将实现该模板。
<h:form id="form" class="hidden"> --> Hidden button
<h:commandButton id="switchPageButton" action="#{circuitBean.renderNextScreen()}"/>
</h:form>
<h:outputScript>
$(function() {
$(".hidden").each(function() { --> Declare Form as hidden, since it becomes overwritten by JSF
$(this).css("display","none");
});
var switchPageLink = $("#form\\:switchPageButton"); --> Get Button via ID
window.setInterval(function() {
switchPageLink.click(); --> Click it
}, #{circuitBean.pageInterval}); --> after X seconds. I'm reading the interval through the bean here. You can just put a number in there
});
</h:outputScript> 发布于 2014-02-21 18:28:28
如果你使用:
<p:remoteCommand name="remoteSwitchPage" actionListener="#{circuitBean.redirect}" />JSF将试图找到getRedirect,这就是为什么您应该使用circuitBean.redirect()。
编辑:我认为您应该使用action而不是actionListener。
下面是我的示例代码(测试):
HTML:
<a href="#" onclick="logoutAccount()"><i class="fa fa-sign-out fa-fw"></i> Logout</a>HTML的另一部分(页末):
<h:form prependId="false">
<p:remoteCommand action="#{sessionMB.logout()}" name="logoutAccount" />
</h:form>豆:
public void logout() {
account = null;
logged = false;
FacesUtil.addInfoGrowl(MessageProvider.getMessage("message.logout.success"), null);
FacesUtil.redirectToPage("", true);
}redirectToPage方法:
public static boolean redirectToPage(String completePath, Boolean keepMessages) {
try {
FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(keepMessages);
FacesContext.getCurrentInstance().getExternalContext().redirect(SimegoUtil.redirectProject() + completePath);
return true;
} catch (IOException ex) {
FacesUtil.addErrorGrowl(MessageProvider.getMessage("message.redirectFail"), null);
return false;
}
}所以,会是这样的:
单击> call remoteCommand Javascript > call bean >重定向到另一个页面
我只是没有得到模板部分你说,如果我能帮助更多的东西告诉我,希望你修复它。
https://stackoverflow.com/questions/21942116
复制相似问题