【问题标题】:Output JCoTable rows using EL <C:forEach>使用 EL <C:forEach> 输出 JCoTable 行
【发布时间】:2017-05-03 15:33:36
【问题描述】:

我创建了一个 java webapp,它将一个自定义表(每条记录由 13 个字段组成)从 SAP 后端读取到 webapp 中的 JCoTable 中,这一切都很好。

我的要求是使用 EL 将 JCoTable 上的所有记录输出到 JSP 上。如何为输出目的引用每个单独的字段?即

<c:forEach items="${claimstable}" var="clms">
      ${clms.field1}
      ${clms.field2}
      ${clms.field3}  
</c:forEach>

我尝试使用ArrayList、TreeSet和HashMap在JSP上输出表格内容,使用servlet将请求属性转发到JSP,但我不能直接访问每个字段,我只能将内容输出为一长串。

我是否需要为我的表字段名创建一个类并继续这样做?还是什么?

非常感谢任何和所有帮助。

【问题讨论】:

    标签: java el jco sapjco3


    【解决方案1】:

    我采用的解决方案是使用 setter 和 getter 创建自定义表的对象,将每个字段创建为对象内的属性,即

    public class ClaimTableProperties {
    
    
    private String zuonr;
    private String bktxt;
    private String blart;
    private String belnr; 
    ...etc.
    

    然后将每个字段的 JCoTable 的每一行映射到一个数组列表:

    static ArrayList<ClaimTableProperties> claimstable = new ArrayList<ClaimTableProperties>();
    
        JCoTable claims = function.getTableParameterList().getTable("CLAIM_DETAILS");
    
        claims.firstRow();
        int rownums = claims.getNumRows();
        ClaimTableProperties[] ctp = new ClaimTableProperties[rownums];
    
        for (int i = 0; i < rownums; i++) {
                ctp[i] = new ClaimTableProperties();
                ctp[i].setBelnr(claims.getString("BELNR"));
                ctp[i].setBktxt(claims.getString("BKTXT"));
                ctp[i].setZuonr(claims.getString("ZUONR"));
                ctp[i].setBlart(claims.getString("BLART")); 
                claimstable.add(ctp[i]);
                claims.nextRow(); 
        } // End for
    

    在您的 servlet 中,设置属性以便您的 jsp 知道它

    ArrayList<ClaimTableProperties> claims = dgc.returnClaimsTable();
    request.setAttribute("claimstable", claims);
    

    然后在jsp上,使用JSTL输出每个必填字段:

    <table>
    <c:forEach items="${claimstable}" var="claim">
    <tr>
    <td>${claim.belnr}</td>
    <td>${claim.bktxt}</td>
    <td>${claim.zuonr}</td>
    <td>${claim.blart}</td>
    </tr>
    </c:forEach>
    </table>  
    

    【讨论】:

      【解决方案2】:

      先在请求中设置值,然后尝试在jsp中访问

      在您的 servlet 中执行此操作

      List<List<Person>> claimstable= getItSomehow();
      request.setAttribute("claimstable", claimstable);
      

      声明表可以在 jsp 中访问。 每个循环使用双精度遍历单个字符串

      【讨论】:

      • 我尝试在我的 servlet 中创建一个 ArrayList 并通过 request.setAttribute 将其发送到我的 jsp,但我无法访问每个单独的字段。我应该创建一个 ArrayList 吗?
      • 您是否将您的 servlet 转发到 write jsp?请分享您的 servlet。
      • 我可以在我的 jsp 中访问“claimstable”(类似于您在上面设置它的方式),但只能作为连续字符串,因为我已将其设置为 ArrayList,但是我需要访问组成表格的每个单独字段
      • 您需要将其用作二维矩阵。即字符串列表列表为List&lt;List&lt;String&gt;&gt;,并根据您的要求将您的条目设置到对象中。
      猜你喜欢
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      相关资源
      最近更新 更多