0

我有一个如下的字符串:

字符串 emps="date1,date2,date3,date4";

我的要求是使用 JSTL 标签在 jsp 页面上打印如下:

OutPut Should be:

日期1

日期2

日期3

日期4

我在我的jsp中使用了以下代码:

<c:set var="string2" value="${fn:split(emps,',')}" />
<c:forEach items="${string2}" var="emps1">
<td><c:out value="${emps1}"/></td>

</c:forEach>

但是我的代码正在删除“,”并在一行中打印如下:

date1 date2 date3 date4 

谁能给我一个解决方案,如何使用jstl标签在jsp中逐行打印日期值?

谢谢

更新:

<c:when test="${requestScope.size!=0}">
        <table border="1">
            <tr>
                <th>Employee Code</th>

                <th>EmployeeName</th>
                <th>EmployeeDepartment</th>
                <th>AbsentDate</th>
                <th>TotalNOOfAbsentDates</th>
            </tr>


            <c:forEach items="${requestScope.set1}" var="emps">
                <tr>
                    <td><c:out value="${emps[0]}" /></td>

                    <td><c:out value="${emps[1]}" /></td>
                    <td><c:out value="${emps[2]}" /></td>

                    <td><c:out value="${emps[4]}" /></td>
                    <c:set var="string2" value="${fn:split(emps[3],',')}" />
                    <c:forEach items="${string2}" var="emps1">
                    <td>
                        <p><c:out value="${emps1}"/></p>

                        </td>

                    </c:forEach>

                    </tr>
            </c:forEach>

注意: 我要打印

这个(迭代)数据逐行使用 <td>标签?

4

3 回答 3

2

我会将其拆分StringList您的 .jsp 之外,然后将其List放入请求中。根据您周围的标记,您可以使用多种方法将项目放在新行上,例如<br/>,<div><p>.

爪哇

String emps="date1,date2,date3,date4";
List<String> empList = new ArrayList<String>(Arrays.asList(emps.split(",")));
request.setAttribute("empList", empList);

JSTL

<c:forEach items="${empList}" var="emp">
   <div><c:out value="${emp}"/></div>
</c:forEach>
于 2013-02-09T10:10:38.863 回答
2

你的要求看起来有点奇怪,但如果你想用表格输出它......

<table>
    <c:set var="string2" value="${fn:split(emps,',')}" />
    <c:forEach items="${string2}" var="emps1">
        <tr>
            <td><c:out value="${emps1}"/></td>
        </tr>
    </c:forEach>
</table>

我希望我正确地回答了你的问题


更新:

尝试运行下一个代码:

<table>
    <c:set var="sourceString" value="${fn:split('q,w,e,r,t,y',',')}" />
    <c:forEach items="${sourceString}" var="element">
        <tr>
            <td><c:out value="${element}"/></td>
        </tr>
    </c:forEach>
</table> 

它对我来说很好(它在新行中输出每个字母),我相信它对你有用。检查您的 html 代码并尝试运行此代码以确保它有效。


更新2:

最后,您的代码将如下所示:

<table border="1">
    <tr>
        <th>Employee Code</th>

        <th>EmployeeName</th>
        <th>EmployeeDepartment</th>
        <th>AbsentDate</th>
        <th>TotalNOOfAbsentDates</th>
    </tr>


    <c:forEach items="${requestScope.set1}" var="emps">
        <tr>
            <c:set var="string2" value="${fn:split(emps[3],',')}" />
            <c:forEach items="${string2}" var="emps1">

                <td><c:out value="${emps[0]}" /></td>
                <td><c:out value="${emps[1]}" /></td>
                <td><c:out value="${emps[2]}" /></td>
                <td><c:out value="${emps1}"/></td>
                <td><c:out value="${emps[4]}" /></td>

            </c:forEach>
        </tr>
    </c:forEach>
</table>

你的错误是混合<tr>标签智慧<td>。此代码将为每个缺席日期生成行,这实际上是您想要的吗?


upd3: 如果您只想在单元格中输出所有这些日期(看起来有点难看),请使用它:

<table border="1">
    <tr>
        <th>Employee Code</th>

        <th>EmployeeName</th>
        <th>EmployeeDepartment</th>
        <th>AbsentDate</th>
        <th>TotalNOOfAbsentDates</th>
    </tr>


    <c:forEach items="${requestScope.set1}" var="emps">
        <tr>
            <td><c:out value="${emps[0]}" /></td>
            <td><c:out value="${emps[1]}" /></td>
            <td><c:out value="${emps[2]}" /></td>
            <td>
                <c:set var="string2" value="${fn:split(emps[3],',')}" />
                <c:forEach items="${string2}" var="emps1">
                    <p>
                        <c:out value="${emps1}"/>
                    </p>
                </c:forEach>
            </td>
            <td><c:out value="${emps[4]}" /></td>
        </tr>
    </c:forEach>
</table>
于 2013-02-09T10:23:23.657 回答
0

就像 Kevin Bowersox 指出的那样,<div><p><br /><TD>

于 2013-02-10T12:04:55.987 回答