【问题标题】:java error String not applicable for the arguments (List<String>)java 错误字符串不适用于参数 (List<String>)
【发布时间】:2012-04-19 13:27:26
【问题描述】:

您好,我不断收到以下错误:

UnitForm 类型中的方法setOfficeCode(String) 不适用于参数(List&lt;String&gt;

我的java代码是:

public static void main(String[] args)   
   {   
       UnitForm uform = (UnitForm) form;

      List<String> lines = new ArrayList<String>();   

      lines.add("Once upon a midnight dreary");   
      lines.add("While I pondered weak and weary");   
      lines.add("Over many a quaint and curious volume of forgotten lore");   

      String[] linesArr = lines.toArray(new String[lines.size()]);   

      for (String line : linesArr)   
      {   
         System.out.println(line);   
      }  

      uform.setOfficeCode(lines);
   }   

我正在尝试将行中包含的内容输出到我的 jsp 中的 formbean,如果我将 setOfficeCode 转换为列表,我在 jsp 上看到的内容会出现 [] 围绕它,例如 [Over many of a quaint and wonderful volume被遗忘的传说,嗨,再见],我不希望括号出现在 jsp 上的数据周围,我想将它们分成单独的行而不是整个字符串,这样 hi 就在新行上,再见正在换行等。

【问题讨论】:

  • 作为旁注。您可以在列表(或任何 Iterable)上使用 for each 构造。首先,您不需要提取数组。
  • 为什么要将列表转换为数组?您可以使用与您已经用于遍历数组的语法完全相同的语法来遍历列表。

标签: java string list arraylist


【解决方案1】:

您的setOfficeCode 需要一个字符串作为参数,并且您给它一个字符串列表。要么更改setOfficeCode 的定义,使其接受一个列表,要么在方法调用时只传递列表中的一个字符串。

另外,您也不需要数组转换:

for (String line : lines)   
{   
   System.out.println(line);   
}  

【讨论】:

    【解决方案2】:

    setOfficeCode{字符串输入) 不等于 setOfficeCode(列表输入)。

    该错误准确而明确地告诉您出了什么问题。

    所以,你的问题实际上是不了解你的代码是如何工作的。

    您需要做的是在以适当的 HTML 格式输出数据之前准备好数据,或者修改您的 JSP 以处理列表而不是字符串。

    执行此操作的最简单方法是使用 commons-lang 库(可能已经在您的类路径中)并执行以下操作:

    uform.setOfficeCode(StringUtils.join(lines, "<br/>"));

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2011-08-29
      • 2016-09-19
      • 2012-04-06
      • 2012-06-28
      相关资源
      最近更新 更多