如何实现此代码:Hashmaps,<s:iterator> </s:iterator>

时间:2013-08-01 02:19:47

标签: javascript jquery jsp struts2 hashmap

寻找有关实施以下内容的最佳方式的建议:

我在动作类的准备中有一个hashmap。这个hashmap有两个值,FruitType和Boolean。可用的水果类型取决于使用屏幕的人。布尔值还取决于使用屏幕的人。

在我的JSP中,我有两种形式:

第一个表单有一个<s:select>列表,其中包含可用的Fruit类型。 仅当与fruit类型对应的boolean为true时,才需要第二种形式。 如果布尔值为true,则启用第二个表单,并禁用第一个表单上的提交按钮。 如果布尔值为false,则禁用第二个表单并启用第一个表单上的提交按钮。

通过javascript启用/禁用我没有任何问题。我的问题是在哪里存储布尔值...我有一个隐藏的输入(isSecondFormReq)和我的选择列表上的一个帖子(在选择一个值时触发)在第一个表单中确定水果布尔值是否为真或false,但我无法更新隐藏输入字段的值......

有没有人有更好的方法呢?

谢谢你。

编辑:我想也许最好的方法可能是使用<s:iterator>并隐藏字段,其中id = key和value = value ...任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

最后读了三遍,我猜你自己提出了一个解决方案,如果FruitType你可以使用你提到的解决方案,即

create a map for fruittype,boolean and then iterate over it in the JSP, so that the 2nd form gets displayed based on the value of the selected fruittype and it's corresponding boolean

我不知道你是如何实现javascript的,但我想为了完整答案,我会提供一个小样本。

<select name="fruit" id="fruit">
<s:iterator value="mapFruitBoolean">
   <option value="fruit.key" data-boolean=<s:property value="value"/>>>Fruit.value</option>
<!-- Above fruit refers to the key of the map, and value is just a boolean
Map<Fruit,Boolean> -->
</s:iterator>
</select>

Javascript代码

$("#fruit").change(function(){
    var option = $(this).find('option:selected');
    if($(option).attr('data-boolean')){
       //Enable the submit button
    }else{
     //Disable the submit button
    }
});

以上代码未经测试,但我想它应该可以正常工作,不过我猜它清楚地解释了这个概念。