2016-03-04 50 views
1

是否可以在加载时用javascript数组填充Struts 2选择标签?用javascript数组填充struts2选择标签

我有一个代码

<s:select id="attrStpSel" name="attrStpSel" headerKey="-1" 
      headerValue="Select" list="${attributeActions}" 
      labelposition="left" onchange="displaySelectAction()" 
      cssStyle="width: 300px;" /> 

这是在页面的脚本。

<script type="text/javascript"> 
    $(document).ready(function() { 
     var attributeActions = [ 'Add', 'Update', 'Search' ]; 
    }); 
</script> 

由于它是一个硬编码值,我不希望它们从行动中填充。与上面的代码的JavaScript变量attributeActions不被拾起。

什么应该是将静态列表填充到Struts 2 select标签中的理想方式?

+0

为什么要使用JavaScript,以及为什么Struts标签这个选择标签? –

回答

1

您可以#{}创建一个在线列表:

<s:select name = "attrStpSel" 
    headerKey = "-1" 
    headerValue = "Select" 
      list = "#{'Add','Update','Search'}" /> 

您还可以创建一个在线地图相同的符号:

<s:select name = "attrStpSel" 
    headerKey = "-1" 
    headerValue = "Select" 
      list = "#{'0':'Add' , '1':'Update' , '2':'Search'}" /> 
0

Struts的标签选择呈现普通的HTML select。它还为生成的html添加了额外的标签,属性,CSS,因为它是UI标签。您可以阅读关于s:select标签的更多信息。

呈现类型为select的HTML输入标记。

如果要填充的JavaScript,你可以做这样的事情

$(function() { 
    var attributeActions = [ 'Add', 'Update', 'Search' ]; 
    var $select = $('#attrStpSel'); 
    $select.find('option').remove(); 
    $('<option>').val("-1").text("Select").appendTo($select); 
    $.each(attributeActions, function(index, value) { 
     $('<option>').val(value).text(value).appendTo($select); 
    }); 
});