java - JSF 和 f :ajax for hiding/showing div

标签 java ajax jsf webforms jakarta-ee

我正在考虑在我的网络应用程序上制作一个可隐藏/可显示的菜单。在此之前,我为此目的广泛使用了 PHP 和 AJAX。然而,由于 HTML 元素 id 在 JSF 框架中重新生成,我发现这种方法至少在我的范围内不再可行。

我已经阅读了 JSF 中的 f:ajax 标签并尝试实现它。显然我没有运气。看起来很简单,但我仍然找不到我做错了什么。

我准备了一个原型(prototype)来测试 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>`

当我单击特定标签时,没有任何反应。 textA、textB 和 textC 元素已经首先渲染。我做错了什么吗?

提前致谢。

最佳答案

However, since HTML element id is regenerated in JSF framework

如果这很重要,只需自己指定固定的 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;
    }

}

关于java - JSF 和 f :ajax for hiding/showing div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940551/

相关文章:

java - 如何在GAE应用程序中从请求 header 获取App Id

java - Eclipse 补丁文件不适用于具有不同名称的同一项目

javascript - 2人回合制游戏逻辑

ajax - 当 session 过期时,网站通常如何自动注销用户?

jsf - 通过复合组件传递 MethodParameter

jsf - jsf中可以用[]获取hashMap的值吗?

java - 如何确定 ZonedDateTime 是否为 "today"?

java - 跟踪 java 程序

javascript - 当超出文本框限制时以视觉方式向用户指示

java - 带有 PrimeFaces : Incell-Editing, 的 JSF 2 RowEditEvent 参数中没有更新的对象