【问题标题】:How to iterate over a backing bean list of strings in JavaScript如何在 JavaScript 中迭代字符串的后备 bean 列表
【发布时间】:2011-07-12 07:35:00
【问题描述】:

我需要将一个字符串数组从支持 bean 传递给 JSP。我可以使用 h:dataTable 并将每个字符串显示为 h:column 条目,没有问题。但我需要在警告框中显示此字符串列表,而不是将其嵌入到 JSP 本身中。我如何将列表传递给 JavaScript 函数并对其进行迭代?然后我想将每个字符串附加到一个变量并显示它。

这是原始数据表:

    <h:dataTable id="scriptCommandTable" value="#{viewScriptRules.scriptCommands}" var="scriptCommand" columnClasses="scriptCommandSequence,scriptCommandRule" rendered="#{viewScriptRules.scriptCommandsSize > 0}">
        <h:column>
            <h:outputText value="#{scriptCommand.sequence}."/>
        </h:column>
        <h:column>
            <h:outputText value="#{scriptCommand.rule}" escape="false"/>
        </h:column>
    </h:dataTable>

【问题讨论】:

    标签: java javascript jsp jsf


    【解决方案1】:

    只需将其打印为 JS 对象数组即可。

    <script>
        var commands = [
            <c:forEach items="#{viewScriptRules.scriptCommands}" var="command" varStatus="loop">
                { 
                    'sequence': '<h:outputText value="#{command.sequence}"/>',
                    'rule': '<h:outputText value="#{command.rule}" escape="false" />'
                }
                <h:outputText value="#{!loop.last ? ',' : ''}" />
            </c:forEach>
        ];
    
        for (var i = 0; i < commands.length; i++) {
            var command = commands[i];
            alert(command.sequence + "," + command.rule);
        }
    </script>
    

    然而,更好的方法是将其作为返回 JSON 字符串的 Web 服务提供。在 jQuery 这样的 JavaScript 库中,您可以无缝访问它们。

    <script>
        $.getJSON('someurl', function(data) {
            $.each(data, function(index, command) {
                alert(command.sequence + "," + command.rule);
            });
        });
    </script>
    

    您可以为此使用普通的 Servlet (example here) 或 JAX-RS。

    【讨论】:

      【解决方案2】:

      在您的支持 bean 中包含另一个属性,它是由列表中的连接项组成的字符串。填充列表时可以设置属性。我知道那不是 java 脚本。

      【讨论】:

      • 好主意!从来没想过。我会试一试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2012-05-28
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多