我正在考虑在我的网络应用程序上制作一个可隐藏/可显示的菜单。在此之前,我为此目的广泛使用了 PHP 和 AJAX。然而,由于 HTML 元素 id 在 JSF 框架中重新生成,我发现这种方法至少在我的范围内不再可行。
我已经阅读了 JSF 中的 f:ajax 标签并尝试实现它。显然我没有运气。看起来很简单,但我仍然找不到我做错了什么。
我准备了一个原型来测试 f-ajax 标签功能,但没有成功。这是代码
` <h:body>
<h:outputLabel>
<h:outputText value="Click A" />
<f:ajax event="click" render="textA"/>
</h:outputLabel>
<h:outputLabel>
<h:outputText value="Click B" />
<f:ajax event="click" render="textB"/>
</h:outputLabel>
<h:outputLabel>
<h:outputText value="Click C" />
<f:ajax event="click" render="textC"/>
</h:outputLabel>
<h:outputText id="textA" value="Click A" />
<h:outputText id="textB" value="Click B" />
<h:outputText id="textC" value="Click C" />
</h:body>`
当我单击特定标签时,什么也没有发生。文本、文本和文本元素已经首先渲染。我做错了什么吗各位?
提前致谢。
但是,由于 HTML 元素 id 在 JSF 框架中重新生成
如果这很重要,只需指定固定id
是你自己。每个组件都有一个id
属性。这样,您应该能够在适用时使用普通的 JS/jQuery 框架。
至于具体问题中的问题,这里有一个可以帮助您入门的工作示例。
<h:form>
<f:ajax render="text">
<h:commandLink value="Click A" action="#{bean.setShow('A')}" /><br/>
<h:commandLink value="Click B" action="#{bean.setShow('B')}" /><br/>
<h:commandLink value="Click C" action="#{bean.setShow('C')}" /><br/>
</f:ajax>
<h:panelGroup id="text">
<h:outputText value="Clicked A" rendered="#{bean.show == 'A'}" />
<h:outputText value="Clicked B" rendered="#{bean.show == 'B'}" />
<h:outputText value="Clicked C" rendered="#{bean.show == 'C'}" />
</h:panelGroup>
</h:form>
结合
@ManagedBean
@ViewScoped
public class Bean {
private String show;
public String getShow() {
return show;
}
public void setShow(String show) {
this.show = show;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)