grails select box无法将String转换为List

时间:2014-09-15 14:33:16

标签: grails

我在选择框中有以下内容

<div class="form-group">
<label for="machinename">Portails</label>
<select name='portalsChoice' multiple class="form-control">
    <g:each in="${portals}" var="portal">
        <option>${portal.name}</option>
    </g:each>
</select>
</div>

然后,在控制器中,我得到所有这样的参数:

def mymethod() {
List<String> portalsChoice = params.portalsChoice
...
}

如果我选择2个元素,它效果很好。 我只选择1个元素,我有以下错误:无法转换对象&#39;我的字符串&#39;与class&#39; java.lang.String&#39; to class&#39; java.util.List&#39;

避免此错误的最佳方法是什么?

提前致谢,

2 个答案:

答案 0 :(得分:1)

替换此

def mymethod() {
    List<String> portalsChoice = params.portalsChoice
}

def mymethod() {
    List<String> portalsChoice = params.list('portalsChoice')
}

portalsChoice列表将包含所选元素,无论选择了多少元素。

答案 1 :(得分:0)

您可以在控制器中提供支票:

List<String> portalsChoice = []
if(params.portalsChoice instanceof String){
   //force it to be a list 
   portalsChoice = params.list('portalsChoice')
}else{
//for multiple 
  portalsChoice = params.portalsChoice 
}

不是那么棘手但有助于解决您的问题。