我需要我的JSF页面来显示被调用方法的返回值,而不会重定向到另一个页面或刷新现有页面。或许我完全不能理解这个问题,所以我要引导我,如何显示bean返回的内容(它返回一些String)。 如果它返回" home",则显示home.xhtml - 此部分有效。 但如果它显示其他东西,我需要它在页面上写。 我的页面如下,如何更改以获得所需的结果?
<!DOCTYPE html>
<html
xmlns:h="http://java.sun.com/jsf/html"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>login</title>
</h:head>
<h:body>
<h:form id="loginForm">
<p:growl id="msg" showDetail="true" life="3000" />
<p:panel header="Login" style="width: 360px;">
<h:panelGrid id="loginPanel" columns="2">
<h:outputText value="Username" />
<p:inputText id="username" value="#{loginBean.userName}"></p:inputText>
<p:spacer></p:spacer>
<p:message for="username"></p:message>
<h:outputText value="Password" />
<p:password id="password" value="#{loginBean.password}"
feedback="false"></p:password>
<p:spacer></p:spacer>
<p:message for="password"></p:message>
<p:spacer></p:spacer>
<p:commandButton action="#{loginBean.login()}" value="Login"
update="loginForm" ajax="true"></p:commandButton>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
我的LoginBean类:
@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {
private String userName;
private String password;
private String role;
private String msg;
省略所有字段的setter和getter
public String login() {
UserBean result = UserDao.login(userName, password);
if (!result.isWrongUserName() && !result.isWrongPassword()) {
HttpSession session = Util.getSession();
session.setAttribute("username", userName);
session.setAttribute("role", role);
return "home";
} else if (result.isWrongUserName()) {
???????????
} else {
???????????
}
}
public String logout() {
HttpSession session = Util.getSession();
session.invalidate();
return "login";
}
}