我正试图写一些"表达语言"代码。现在,在greetController下面的(1)。方法调用,如果用户名和密码匹配,则返回一个字符串。我想做的是,而不是加载另一个网页,如果返回的字符串是一个特定的值。谁能告诉我怎么做?
Thanks in advance
<!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>
我的答案假设这个登录表单是在/app/login.xhtml,你想加载另一个网页(说/app/home.xhtml),如果返回的字符串是一个值(说success):
为jsf 2如果使用JSF2,可以简单地从bean
返回下一页的URLpublic String login()
{
// check user password...
return "/app/home.xhtml"
// this will work without faces-config.xml entry using JSF2
}
For 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/