【问题标题】:Checkbox values and useBean tag复选框值和 useBean 标记
【发布时间】:2012-10-23 14:29:45
【问题描述】:

我是一个 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”是我选择的值之一。我认为特权字段的值已经是一个列表,但它似乎以不同的方式工作。我试图遍历 $param.priviledge 对象,我得到了所有的值没有问题。

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

感谢您的帮助。 罗伯托

【问题讨论】:

    标签: java forms checkbox model jstl


    【解决方案1】:

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

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

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

    ${paramValues.priviledge}
    

    Subscription bean 上的属性需要是一个字符串数组:

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

    (我不知道您是否简化了代码以在此处发布,但您不应该使用默认包 - 许多 Web 服务器不喜欢它并且无法实例化您的 @ 987654328@班级。)

    【讨论】:

    • 太棒了。感谢您的解释,不知道 paramValues 对象。 ps:是的,我写的很简单,我的模型没有使用默认包:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多