使用JSP在TextArea中输出多行

| 如何在没有额外空格的一行接一行的TestArea行中显示列表。即:
this
that
the
other
这是我的尝试:
<div class=\"text\">
    <label for=\"output_string\">Output:</label> `
    <textarea rows=\"10\" cols=\"20\">
        <c:forEach var=\"x\" items=\"${messagelist}\">${x}</c:forEach>
    </textarea>
</div>
    
已邀请:
        这是一个猜测(我将在几秒钟内在自己的页面中进行尝试):
<c:forEach var=\'x\' items=\'${messagelist}\'><c:out value=\'${x}\\r\\n\'/></c:forEach>
编辑-不,这似乎根本不起作用。但是,对我来说,要做的是添加一个消息目录条目,如下所示:
linebreak={0}\\r\\n
然后,您可以使用
<fmt:message key=\"linebreak\"><fmt:param value=\"${x}\"/></fmt:message>
产生以换行符结尾的字符串。 请注意,JSP将根据.jsp源文件中ѭ5之前的缩进方式在第一个条目之前放置空格,因此,如果您不想这样做,则必须将所有内容都放在左边缘。 如果必须要做很多,我将编写自己的EL附加功能以回显一个字符串,然后返回CRLF。 编辑-如果要编写EL附加组件,则需要满足以下两项条件: 函数本身,应该是某个类的“ 6”方法。对于我的大多数人,我都会使用一个名为“ ELFunctions”的类。您可以根据需要安排它们。 \“。tld \”文件(如果您还没有的话)。它应该最终在您的Web应用程序中\“ WEB-INF \”下的某个位置。我的位于子目录\“ tld \”,但是您可以将其放在任何位置。 因此,您可以在某个类中编写一个像这样的小函数:
public static String linebreak(final String msg) {
    return msg + \"\\r\\n\";
}
然后,您的\“。tld \”文件将如下所示(假设这是您唯一的文件;如果已有\“。tld \”文件,则只需添加以下子句):
<taglib xmlns=\"http://java.sun.com/xml/ns/j2ee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd\" version=\"2.0\">
  <description>Your Favorite Description</description>
  <display-name>Make Something Up</display-name>
  <tlib-version>4.0</tlib-version>
  <short-name>whatever</short-name>
  <uri>http://yourdomain.com/tld/whatever</uri>

  <function>
    <description>
        Return a string augmented with trailing line break (CR - LF pair)
    </description>
    <name>linebreak</name>
    <function-class>your.package.name.YourClass</function-class>
    <function-signature>
        java.lang.String linebreak(java.lang.String)
    </function-signature>
  </function>
(男孩,XML太烦人了。)现在,在某个地方,您可能已经有了一个小文件,该文件为页面引入了标记库(至少有9个标记)。在其中或任何页面的顶部,添加如下一行:
  <%@ taglib prefix=\"whatever\" uri=\'http://yourdomain.com/tld/tango\' %>
我认为JSP运行时通过浏览WEB-INF子树来搜索\“。tld \”文件,并在WEB-INF / lib中的.jar文件中搜索该\“ uri \”字符串。无论如何,一旦完成此操作,就可以在JSP文件中说:
  <c:forEach var=\'x\' items=\'${messagelist}\'>${whatever:linebreak(x)}</c:forEach>
它将调用您的函数。     
        
<c:set var=\"xv\"></c:set>
<c:forEach items=\"${messagelist}\" var=\"x\">
    <c:if test=\"${not empty x}\">
    <c:choose>
        <c:when test=\"${idx.first}\"><c:set var=\"xv\" value=\"${x}\"></c:set></c:when>
        <c:otherwise><c:set var=\"xv\" value=\"${xv},${x}\"></c:set></c:otherwise>
    </c:choose>
    </c:if>
</c:forEach>
<textarea cols=\"45\" rows=\"5\">${xv}</textarea>
    

要回复问题请先登录注册