我正在尝试编写一些“表达式语言”代码。目前,在下面的(1)下调用greetController.greet方法,如果用户名和密码匹配,则返回一个字符串。我想要做的是,如果返回的字符串是某个值,则加载另一个网页。请有人建议如何做到这一点
提前致谢
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="template.xhtml">
<ui:define name="content">
<h:messages />
<h:form id="greetForm">
<h:panelGrid columns="3">
<h:outputLabel for="username">Enter username:</h:outputLabel>
<h:inputText id="username"
value="#{greetController.username}" />
<br />
<h:outputLabel for="password">Enter password:</h:outputLabel>
<h:inputText id="password"
value="#{greetController.password}" />
<h:message for="username" />
</h:panelGrid>
<h:commandButton id="greet" value="Login"
**action="#{greetController.greet}" />** //(1)
</h:form>
**<h:outputText value="#{greetController.greeting}"** //(2)
rendered="#{not empty greetController.greeting}" />
<br />
<h:link outcome="/create.xhtml" value="Add a new user" />
</ui:define>
</ui:composition>
</html>
答案 0 :(得分:1)
我的回答是假设此登录表单位于 /app/login.xhtml ,并且您想要加载其他网页(例如 /app/home.xhtml )返回的字符串是一个值(比如成功):
对于JSF2
如果您使用的是JSF2,则只需从bean中返回下一页的URL
即可public String login()
{
// check user password...
return "/app/home.xhtml"
// this will work without faces-config.xml entry using JSF2
}
对于JSF1或JSF2
只需将此条目添加到faces-config.xml文件即可。
<navigation-rule>
<from-view-id>/app/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/app/home.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
更多信息 你的问题很基础。我建议遵循JSF的初学者级别教程。例如:http://www.mkyong.com/tutorials/jsf-2-0-tutorials/