Forms 编程登录到jsf应用程序

Forms 编程登录到jsf应用程序,forms,jsf,login,Forms,Jsf,Login,我找到了编程登录到基于jsf的应用程序的例子,比如从Balusc。 也许这是一个愚蠢的问题,但当我使用基于表单的身份验证时,我只能使用一个简单的html表单 <input id="username" type="text" name="j_username" /> <input id="password" type="password" name="j_password"/> 以形式 我不能使用示例中的jsf表单,为什么?因为处理登录的不是jsf,而是容器本身。J

我找到了编程登录到基于jsf的应用程序的例子,比如从Balusc。 也许这是一个愚蠢的问题,但当我使用基于表单的身份验证时,我只能使用一个简单的html表单

<input id="username" type="text" name="j_username" />
<input id="password" type="password" name="j_password"/> 

形式


我不能使用示例中的jsf表单,为什么?

因为处理登录的不是jsf,而是容器本身。JSF
不允许您指定特定的操作URL。因此,您必须使用


但你的问题标题令人困惑。使用
j_security_check
表单是而不是“编程登录”。这是“容器管理登录”。真正的编程登录方式是自己调用
HttpServletRequest#login()
。您可以在JSF托管bean操作方法中实现这一点,该方法由JSF调用,因为处理登录的不是JSF,而是容器本身。JSF
不允许您指定特定的操作URL。因此,您必须使用


但你的问题标题令人困惑。使用
j_security_check
表单是而不是“编程登录”。这是“容器管理登录”。真正的编程登录方式是自己调用
HttpServletRequest#login()
。您可以在JSF托管bean操作方法中实现这一点,JSF

调用该方法很难承认,但我觉得自己很笨。我在web.xml的/login/loginSimple.xhtml节中确定。当我尝试使用托管bean-loginSimple.xhtml创建编程jsf登录页面时,它根本不起作用:(那么您使用的是容器管理的登录。然后您确实应该使用一个普通的
。您不需要在JSF中为此做任何事情。很难承认,我觉得自己很笨。我在web.xml的/login/loginSimple.xhtml节中确定了这一点。当我尝试使用Approvirpirate managed bean-loginSimple.xhtml创建编程JSF登录页面时,它不起作用首先:(那么您使用的是容器管理的登录。然后您确实应该使用普通的
。您不需要在JSF中执行任何操作。