如何在JavaScript中迭代支持bean的字符串列表

时间:2011-03-09 22:50:34

标签: java javascript jsp jsf

我需要将一个字符串数组从辅助bean传递给JSP。我可以使用h:dataTable并将每个字符串显示为h:列条目,没有任何问题。但是我需要在警告框中显示这个字符串列表,而不是将其嵌入到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>

2 个答案:

答案 0 :(得分:3)

只需将其打印为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 Servlet(example here)或JAX-RS。

答案 1 :(得分:0)

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