2011-03-09 50 views
0

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

这里是原始数据表:

<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> 

回答

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(example here)或JAX-RS。

0

包括在你的后台bean的另一个属性是一个从列表中concatated项目组成的字符串。属性可以在列表填充时设置。我知道这不是Java脚本。

+0

好主意!从来没有想到这一点。我会给它一个镜头。 – user246392 2011-03-09 22:58:32