我有一个简单的登录表单,它调用一个操作,如果登录成功,返回安全区域的视图id。我想使用ajax的行动,但当页面得到重定向javax.faces.ViewState不存在的形式,使用户必须点击两次,以恢复它。如果我设置ajax="false ",那么一切都很好,除了我丢失了用p:ajaxSatatus实现的酷转换。
在使用BlausC的这篇博客文章之前,我已经处理过这种问题http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#AjaxRenderingOfContentWhichContainsAnotherForm我还看到commandButton/commandLink/ajax操作/侦听器方法未被调用,或者输入值未更新
在过去,我成功地与富家子弟一起解决了这个问题,但现在我陷入了困境。
我的环境是:Mojarra 2.1.6 PrimeFaces 3.4.2 GlassFish Server开源版3.1.2.2
代码:
<h:form id="loginForm">
<div style="margin: 0px auto; width: 300px;">
<p:messages />
<p:panelGrid columns="2" styleClass="panelGridNoBorder">
<h:outputLabel value="Name: " for="txtPrincipal"/>
<p:inputText id="txtPrincipal" value="#{userBean.principal}"/>
<h:outputLabel value="Email:" for="txtPassword"/>
<p:password id="txtPassword" value="#{userBean.password}" />
</p:panelGrid>
<p:commandButton id="loginButon" action="#{userBean.login}" value="Login"/>
</div>
</h:form>
UserBean.java@SessionScoped
public String login() {
try {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
loginedUser = autenticator.authenticate(principal, passHash, request.getRemoteAddr());
request.login(principal, passHash);
if (loginedUser != null) {
return "/admin/index.xhtml";
} else {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuario o contraseña incorrecto", "Usuario o contraseña incorrecto");
FacesContext.getCurrentInstance().addMessage(null, message);
return null;
}
} catch (ServletException ex) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuario o contraseña incorrecto", "Usuario o contraseña incorrecto");
FacesContext.getCurrentInstance().addMessage(null, message);
return null;
}
}
多谢帮忙
如果您使用的是MSIE浏览器,则可以识别您的具体问题。你基本上需要覆盖PrimeFaces ajax响应处理程序。有关具体的代码示例,另请参阅此答案。
但是,更好的是在登录后发送重定向。这也是符合后重定向获取模式的规范方法。
return "/admin/index.xhtml?faces-redirect=true";
这可不是一个简单的话题。其中涉及了应用程序中的诸多领域,你可能想要同步 API 的响应,或者你想要处理其它类型的流,比如 UI 中的点击事件或键盘事件。 有大量的操作符以它们各自的方式来处理时间,比如 delay、 debounce、 throttle、 interval, 等等。 interval 这个操作符用来创建一个 Observable,基本上它所做的就是按固定的时间间隔提供值,函数签名如
问题内容: 是否有API可以按时(小时,分钟)快速进行操作(例如加,减)。 伪代码在下面列出 问题答案: http://joda-time.sourceforge.net/
问题内容: 在JSF中减小viewstate隐藏字段大小的最佳方法是什么?我已经注意到,我的视图状态大约为40k,这会下降到客户端,并在每次请求和响应(尤其是到达服务器)时都返回到服务器,这对于用户来说是一个严重的问题。 我的环境JSF 1.2,MyFaces,Tomcat,战斧,RichFaces 问题答案: 您是否尝试过将状态保存设置为服务器?这应该仅将ID发送给客户端,并在服务器上保持完整状
使用Juno和Eclipse PDE。尝试创建一个简单的插件(使用模板Hello,World Command)。运行时,日志中会显示以下消息: !消息找不到操作集: 你好世界.action集 正如在Q: Eclipse Missing Action Set中建议的那样,我创建了一个新的工作区,重新创建了项目并重新安装了PDE。这些都没有任何效果。 我该如何解决这个问题?
问题内容: 我几乎与Nathon Taylor在ASP.NET MVC- 控制器之间的共享会话状态中描述的场景完全相同。问题是,如果我将路径保存到Session变量中的图像,则不会在ItemController中定义它,因此所有路径都将丢失…这是我的设置: 在ImageController内部,我具有Upload()操作方法: 然后在我的ItemController中,我有New()操作方法,该方
当将许多Excel文件与aspose组合在一起时,我得到的是单个工作簿(包含许多工作表的Excel文件)。但问题是我没有得到HTML样式(颜色,字体,大小背景颜色...)合并前的每个工作表中都有。 下面是我的java代码: 我不知道是否有一个选项使aspose在组合工作簿时考虑到样式?