javascript - 如何渲染 h :panelGroup inside ui:repeat based on value from javascript?

标签 javascript jsf jsf-2 el rendered-attribute

我将 bool 值输入 <h:inputText>但我找不到将其放入 rendered 的方法-<h:panelGroup> 的属性.我也没有看到使用 bean 值的方法,因为每次迭代都需要一个单独的值。

这是我的 jsf 代码:

<ui:repeat var="item" value="#{itemBean.items}" id="iterateItems" varStatus="iteration">
    <script type="text/javascript">         
        showItem("#{item.id}","#{iteration.index}");
    </script>
    <h:inputText id="rendered"/>
    <h:panelGroup layout="block" rendered="???">
        Iteration #{iteration.index} rendered
    </h:panelGroup>
</ui:repeat>

这是我的javascript:

function showItem(item,iteration){
    if((clientSideValue==something){
        document.getElementById("iterateItems"+":"+iteration+":"+"rendered").value = true;
    }
    else{
        document.getElementById("iterateItems"+":"+iteration+":"+"rendered").value = false;
    }
}

最佳答案

JavaScript 在客户端运行并处理从服务器端检索的 HTML DOM 树(在您的特定情况下由 JSF 生成)。因此,JavaScript 期望您想要显示/隐藏的所需 HTML 元素始终存在于 HTML DOM 树中。

JSF 在服务器端运行并根据 JSF 组件树(“ View ”)生成 HTML 代码。当 JSF 组件的 rendered 属性评估为 false 时,不会为给定组件生成任何 HTML 代码,因此 HTML DOM 树中不会有任何内容,因此也没有任何内容将可供 JavaScript 的 document.getElementById() 选择。

您认为这将是解决方案的具体功能需求尚不清楚,因此很难针对您的具体问题提出正确的解决方案。但是如果您绝对肯定显示/隐藏需要在客户端(通过 JavaScript)而不是在服务器端(通过 JSF)执行,那么您应该使用 CSS 的 display您可以在 blocknone 之间切换的属性。

这是一个基本的启动示例,假设您最初想隐藏它:

<ui:repeat var="item" value="#{itemBean.items}" id="iterateItems" varStatus="iteration">
    <script type="text/javascript">         
        showItem(#{iteration.index});
    </script>
    <h:inputText id="rendered" />
    <div id="foo#{iteration.index}" style="display:none">
        Iteration #{iteration.index} shown
    </div>
</ui:repeat>

function showItem(index) {
    var div = document.getElementById("foo" + index);

    if (someCondition) {
        div.style.display = "block"; // Show it.
    } else {
        div.style.display = "none"; // Hide it.
    }
}

关于javascript - 如何渲染 h :panelGroup inside ui:repeat based on value from javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702872/

相关文章:

javascript - 正则表达式:使用 javascript 从字符串中获取格式为 n.n.n 的数字?

javascript - Ember CLI - 未捕获错误 : Could not find module ember?

javascript - 使用从支持 bean 调用的 JavaScript 制作 anchor

jsf - 如何在 h :inputText? 中指定 name 属性

java - 是否不支持 meta http-equiv 值缓存控制?

java - 如何创建选项卡 - Jquery 或 JSF

jsf-2 - 从 Facelets 错误页面引用 CDI 托管 bean

javascript - 更改 Bootstrap 投资组合元素模板上的图像

javascript - angularjs中的 Controller 功能?

mysql - JSF、Hibernate 和 BLOB 服务