如何使用 Primefaces 实施 j_security_check ?通常在 JSP 中,如果您想使用 JAAS 进行登录,则登录表单通常为:
<form action="j_security_check" method="POST">
Username:<input type="text" name="j_username"><br>
Password:<input type="password" name="j_password">
<input type="submit" value="Login">
</form>
但是我们如何在JSF或Primefaces中实现它!
formId:componentId
p:commandButton
在Primefaces中被ajaxified,所以它是怎么回事
以非ajax方式提交表格我需要使用 Primefaces 实施 JAAS 表单身份验证,我在这里分享解决方案;它可能对某人有用。
答案 0 :(得分:18)
解决方案非常简单。
h:form
定义prependId="false"
,以便它不会将组件的ID或名称生成为formId:componentId
。action="j_security_check"
中的h:form
定义为onsubmit="document.getElementById('login').action='j_security_check';"
ajax
的{{1}}属性设置为p:commandButton
,以便不以ajax方式提交表单。就是这样。以下是登录表格的完整代码,可以用上述表格代替:
false
感谢。
答案 1 :(得分:2)
有工作(使用Primefaces 5)代码(从p:inputText删除名称属性,p:密码,删除由BalusC部分建议):
<h:form id="login" onsubmit="action='j_security_check';" prependId="false">
<h:panelGrid columns="2">
<p:outputLabel for="j_username" value="Username" />
<p:inputText id="j_username" />
<p:outputLabel for="j_password" value="Password" />
<p:password id="j_password" />
<p:commandButton id="submit" value="Login" ajax="false"/>
</h:panelGrid>
</h:form>