我有一个页面拆分为3.第一部分是绑定到mBean( MLeft )的链接列表,第二部分是当前的mBean( MCenter )我所在的页面.MCenter将数据插入MLeft,以便第一部分的链接自定义到我当前所在的页面。问题是当页面被渲染并且链接被评估时 MLeft在MCenter之前创建(因为在页面的前面找到),MCenter没有机会在 MLeft 中插入链接,因此不会显示任何链接。我在链接前使用输出文本调用了 MCenter ,引用dummy
属性为empty string
。
我不喜欢这种解决方法,我过去也遇到过 Seam 和@Out
这个问题,我就这样解决了。有更好的方法吗?
答案 0 :(得分:1)
也许您可以使用以下方法:
<f:view beforePhase="#{userMB.verifyUser}" />
在加载页面时将调用该方法
答案 1 :(得分:0)
只需将Center
设为Left
的托管属性即可。 E.g。
@ManagedBean
@RequestScoped
public class Left {
@ManagedProperty(value="#{center}")
private Center center;
@PostConstruct
public void init() {
// Initialize links based on Center here.
}
// ...
}
答案 2 :(得分:0)
我认为你需要使用模板:
的template.xhtml
<ui:composition>
<h:head>
<title>
<ui:insert name="title" />
</title>
<h:outputStylesheet name="css/haleczander.css" />
</h:head>
<h:body>
<div class="left">
<ui:include src="static_links.xhtml />
<ui:repeat value="#{links}" var="link">
<h:outputLink value="#{link}">#{link}</h:outputLink>
</ui:repeat>
</div>
<div class="center">
<ui:insert name="content" />
</div>
</h:body>
</ui:composition>
content1.xhtml
<ui:composition template="template.xhtml">
<ui:define name="title">
Content page 1
</ui:define>
<ui:param name="links" value="#{middle.links}" />
<ui:define name="content">
Blah blah 1
</ui:define>
</ui:composition>
我假设链接是一个列表或一个字符串数组,但你可以做任何事情:一个自定义MyLink对象的列表,......(只要有一个合适的getter)
您也可以用您喜欢的任何内容替换middle.links,事件调用如#{middle.getLinks(page1)}