在JSF中条件显示包含页面时无法调用bean方法
我有主页,仪表板页面和addfield页面。主页上有用于仪表板的链接,仪表板上有用于添加字段的链接。单击“命令链接”时,此功能工作正常。 我想在仪表板中显示addfield页面,在主页中显示仪表板页面。当我使用include显示页面时,它包括页面并显示 当我想在单击主页命令链接时显示仪表板页面时,它不起作用在JSF中条件显示包含页面时无法调用bean方法,jsf,Jsf,我有主页,仪表板页面和addfield页面。主页上有用于仪表板的链接,仪表板上有用于添加字段的链接。单击“命令链接”时,此功能工作正常。 我想在仪表板中显示addfield页面,在主页中显示仪表板页面。当我使用include显示页面时,它包括页面并显示 当我想在单击主页命令链接时显示仪表板页面时,它不起作用 <f:ajax event="action" render="panelid"> dashBoard.java package ims.com.dashboard; impo
<f:ajax event="action" render="panelid">
dashBoard.java
package ims.com.dashboard;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.view.ViewScoped;
@ManagedBean(name="dashBoard")
@ViewScoped
public class DashBoard implements Serializable {
@ManagedProperty(value = "#{param.pageName}")
private String pageName;
public String showPage() {
if (pageName == "addField") {
return "AddField";
}
}
public void setPageName(String pageName) {
this.pageName = pageName;
}
}
请添加一些代码,我来看看。为什么添加那么多与实际问题域无关的代码?请考虑将它作为最短的代码来识别/复制相同的问题以获得更好的帮助。我已经删除了一些代码。一些明显的事情:在
equals()
方法进行比较。同一方法中缺少return
语句-showPage()
。在仪表板
类中重复相同的操作-将字符串与=
(pageName==“addField”
)和缺少的return
语句进行比较。
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition>
<h:form>
<h:panelGrid columns="4" width="100%">
<h:commandLink action="#{home.showPage}" value="Home">
<f:param name="pageName" value="home" />
<f:ajax event="action" render="pgdb"/>
</h:commandLink>
<h:commandLink action="#{home.showPage}"
value="DashBoard">
<f:param name="pageName" value="dashBoard" />
<f:ajax event="action" render="pgdb"/>
</h:commandLink>
</h:panelGrid>
<h:panelGroup id="pgdb" rendered="#{home.showDashBoard}">
<ui:include src="/DashBoard.xhtml"/>
</h:panelGroup>
</h:form>
</ui:composition>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:form>
<h:panelGrid columns="2">
<table border="1" width="30%">
<tr>
<h:commandLink action="#{dashBoard.showPage}"
value="Add Field">
<f:param name="pageName" value="addField" />
</h:commandLink>
</tr>
</table>
</h:panelGrid>
<ui:include src="AddField.xhtml"/>
</h:form>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition>
<h:form>
<h:outputText value=FirstName" />
<h:outputText value="LastName" />
</h:panelGrid>
</h:form>
</ui:composition>
</html>
package ims.com.home;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@ManagedBean(name="home")
@Scope
@Component
public class Home implements Serializable {
@ManagedProperty(value = "#{param.pageName}")
private String pageName;
private boolean showDashBoard = false;
public boolean isShowDashBoard() {
return showDashBoard;
}
public void setShowDashBoard(boolean showDashBoard) {
this.showDashBoard = showDashBoard;
}
public String showPage() {
if (pageName == "home") {
showDashBoard = false;
return "HomePage";
}
if (pageName.equals("dashBoard")) {
showDashBoard = true;
return "HomePage";
}
}
public String getPageName() {
return pageName;
}
public void setPageName(String pageName) {
this.pageName = pageName;
}
}
package ims.com.dashboard;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.view.ViewScoped;
@ManagedBean(name="dashBoard")
@ViewScoped
public class DashBoard implements Serializable {
@ManagedProperty(value = "#{param.pageName}")
private String pageName;
public String showPage() {
if (pageName == "addField") {
return "AddField";
}
}
public void setPageName(String pageName) {
this.pageName = pageName;
}
}