2009-09-25 59 views
0

我有这种方法的模型他们的名字在我的模型中返回的列表中。 所以我有这样的:使用对象的JSTL页面方法

<li> 
    <input type="checkbox" name ="priviledge" id="CheckBox2" class="checkbox" value="clickthrough" /> 
    <label for="CheckBox2">Clickthrough</label> 
</li> 
<li> 
    <input type="checkbox" name ="priviledge" id="CheckBox3" class="checkbox" value="details" /> 
    <label for="CheckBox3">Details</label> 
</li> 

我想补充的检查=“选中”仅他们的名字是我的模型的方法提供的列表。有没有办法做到这一点,而不使用scriptlet?我想在我的网页内没有Java代码...

感谢您的任何帮助! 罗伯托

+0

什么,我想你想要的是绝对可以实现的,但是我对这个问题感到困惑 - 你在'我想添加checked ='checked'“中引用的”他们“是什么,只有他们的名字在我的模型方法提供的列表中。 ? – Chii 2009-09-25 11:05:37

+0

对不起,我的意思只是如果他们的价值是在列表中,如“点击率”或“细节”! – Roberto 2009-09-25 12:17:46

回答

0
<c:when test = "${fn:contains(list,value)}"> 

- 根据该文档它实际上做一个字符串/字符串比较,所以我认为它实际上是检查字符串值是否list.toString的子串()。

您也可以使用forEach标记对列表中的每个值执行手动测试,但这样会变得更加混乱。

+0

是的for循环将是一团糟,我一定会尝试这个解决方案。我没有尝试,因为我没有考虑要调用toString()方法。 – Roberto 2009-09-25 12:16:35

0

通过使用地图,而不是一个列表可以做这样的事情:

<c:if test="${yourModel.priviledgeNames['clickthrough'] ne null}"> 
checked="checked"</c:if> 

或者只是这样的:首先映射复选框名${yourModel.priviledgeNames['clickthrough']}检查=“检查”