复选框值和useBean标记

时间:2009-09-21 09:15:41

标签: java forms checkbox model jstl

我是一个jstl新手,所以这个问题可能听起来很有趣。 无论如何,我有一个List作为属性的模型,我想用一个值列表填充它(从复选框列表中选择)。我在表单处理jstl页面中使用了useBean标记,但是执行此操作:

<jsp:useBean id='subscription' class='Subscription'>
<c:set target='${subscription}' property='priviledge' value='${param.priviledge}'/>

如果属性priviledge是List和$ param.priviledge一系列复选框的值,我得到了

javax.servlet.jsp.el.ELException: Attempt to convert String "ads"  to type "[Ljava.lang.String;", but there is no PropertyEditor for that type

“ads”是我选择的值之一。我认为priviledge字段的值已经是List,但它似乎以不同的方式工作。我试图遍历$ param.priviledge对象,我得到所有的值没有问题。

如何使用此列表填充列表?

感谢您的帮助。 罗伯特

1 个答案:

答案 0 :(得分:1)

  

尝试将字符串“ads”转换为“[Ljava.lang.String;”

此错误表明设置者是setPriviledge(String[] arr),而不是java.util.List

param地图中的值是字符串;要将所有值作为数组获取,请使用paramValues映射。

${paramValues.priviledge}

Subscription bean上的属性需要是一个String数组:

  private String[] priviledge;

  public String[] getPriviledge() {
    return priviledge;
  }

  public void setPriviledge(String[] priviledge) {
    this.priviledge = priviledge;
  }

(我不知道你是否简化了在此发布的代码,但你不应该使用默认包 - 很多网络服务器都不喜欢它,并且无法实例化你的{ {1}}类。)