【发布时间】:2013-09-10 04:59:14
【问题描述】:
我有一个无法解决的问题,或者至少我对 jsf 的了解有限。 我知道在 stackoverflow 上可以找到一些好的解决方案,但我无法弄清楚我的错误。
我只想拥有一些命令链接,例如导航栏,它们应该更改包含包含子句的预定义 div 标签的内容。所以我想我的索引可以被重新解释为一种模板。
我的索引:
<h:panelGroup id="navigation" layout="block">
<h:form>
<h:panelGrid columns="4" columnClasses="colDefault,colDefault,colDefault,colDefault">
<f:ajax render=":include">
<h:commandLink value="entry1" action="#{menuController.setPage('login')}" />
<h:commandLink value="entry2" action="#{menuController.setPage('register')}" />
<h:commandLink value="entry3" action="#{menuController.setPage('welcome')}" />
</f:ajax>
</h:panelGrid>
</h:form>
</h:panelGroup>
<h:panelGroup id="center_content" layout="block" class="center_content" >
<h:panelGroup id="include">
<ui:include src="#{menuController.page}.xhtml" />
</h:panelGroup>
</h:panelGroup>
就像在 BalusC 的这篇文章中一样 用一个小而简单的豆子:
@ManagedBean
public class MenuController implements Serializable{
private String page;
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
}
但我得到了一个 TagAttributeException @
/index.xhtml @17,92 action="#{menuController.setPage('login')}" Could not Resolve Variable [Overflow]: menuController
我试过了,但我不知道该怎么做。
【问题讨论】:
-
#{menuController.setPage('login')}这在您发布的代码中无处可见。你错过了一些代码吗? -
已编辑,是的,我复制了一个测试版本
-
您运行的是 Servlet 3.0 / EL 2.2 吗?