浏览 6578 次
锁定老帖子 主题:关于jstl
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (12)
作者 正文
   发表时间:2010-02-09  
今天遇到一个问题,将organization和employee两种对象放到同一个list中后,在页面上将这个list用<c:forEach>显示出来,如何显示?
从网上找了2小时,没有找到好的解决方法。
后来从javaeye上看到一篇文章,虽然不对,但是给我了启发:el表达式可以直接通过get方法读取对象的值!呵呵
修改Organization.java和Employee.java,增加了如下的部分:
1、Organization.java
private String className;

public String getClassName() {
  return "com.zb.itams.domain.Employee";
}

public void setClassName(String className) {
  this.className = "com.zb.itams.domain.Employee";
}

2、Employee.java
private String className;

public String getClassName() {
  return "com.zb.itams.domain.Organization";
}

public void setClassName(String className) {
  this.className = "com.zb.itams.domain.Organization";
}

3、在页面上:
<c:forEach items="${listEmployees}" var="employees"><br />
  <c:if test="${employees.className == 'com.zb.itams.domain.Organization'}">
    <c:out value="${employees.organizationId}" />
    <c:out value="${employees.organizationShortName}" />
  </c:if>
  <c:if test="${employees.className == 'com.zb.itams.domain.Employee'}">
    <c:out value="${employees.employeeId}" />
    <c:out value="${employees.employeeFirstName}" />
    <c:out value="${employees.employeeLastName}" />
  </c:if>
</c:forEach>

4、显示结果:
8abc8098269c7b4a2949c7b4a010011 总公司
8abc809826aa38d0294aa38d0a30000 山东分公司
8abc809826aa38d0294aa38d0a30001 张 三
   发表时间:2010-02-09  
虽然对你这个问题很无语 但还是告诉你个东西吧.
jstl读取的是get方法 你的className字段和set方法都可以删掉
1 请登录后投票
   发表时间:2010-02-09  
1、你可以直接通过${employees.class.simpleName}获取其类名,而不必再给他们定义getClassName的方法
2、如果多数属性名称相同的话,可以给不相同的属性起个别名,比如都提供一个方法叫getFullName()
3、<c:out value="${employees.employeeLastName}" />   直接写${employees.employeeLastName}就可以了,记不清楚是从那个版本开始,el的输出已经内置了。
4、var="employees" 为什么加s?
1 请登录后投票
   发表时间:2010-02-11  
LZ的实现感觉有点怪怪的,organization和employee两种对象既然有相似的地方,不能共同实现一个接口或什么的吗?
0 请登录后投票
   发表时间:2010-02-11  
ynstudio 写道
1、你可以直接通过${employees.class.simpleName}获取其类名,而不必再给他们定义getClassName的方法
2、如果多数属性名称相同的话,可以给不相同的属性起个别名,比如都提供一个方法叫getFullName()
3、<c:out value="${employees.employeeLastName}" />   直接写${employees.employeeLastName}就可以了,记不清楚是从那个版本开始,el的输出已经内置了。
4、var="employees" 为什么加s?

测试了,正确的。
呵呵,又学到东西了,谢谢
0 请登录后投票
   发表时间:2010-02-11  
貌似2.X的时候就可以直接用$输出了
0 请登录后投票
   发表时间:2010-02-11  
集合里面本来就应该放同样的东西,放两种对象在里面,最初的设计就有问题。
0 请登录后投票
   发表时间:2010-02-13  
我完全无语了。。。。我还以为对jstl的什么新东西。。。
怎么会上首页呢?
抱歉楼主了,我投隐藏了。
0 请登录后投票
   发表时间:2010-02-14  
建议楼主多看一下《jsp应用开发详解》,里面有jstl详尽的讲解。
0 请登录后投票
   发表时间:2010-02-21  
aaa5131421 写道
集合里面本来就应该放同样的东西,放两种对象在里面,最初的设计就有问题。

初学者,见笑了。
我想实现如下图所示类似的功能:

想问一下,在设计时有什么样好的思路?

  • 大小: 36.4 KB
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics