【问题标题】:Print all bean properties in EL without need to override toString() every time打印 EL 中的所有 bean 属性,无需每次都覆盖 toString()
【发布时间】:2011-10-10 16:13:32
【问题描述】:

我在 EL 中有一个 bean 列表/地图,或者至少我认为它是,我已经厌倦了花费数小时试图找出哪些部分属于彼此。所以我像${example}一样简单地打印出来。

football.beans.FootballFixture@72bec69[match=football.domain.FootballMatch@773aa1d5[id=360496,competition=PREMIERSHIP,seasonId=2011,groupName=,roundType=,roundNumber=,matchPeriod=FULL_TIME,matchDay=3,场地Id=33,场地=白鹿巷,venueCity=伦敦,homeTeamId=t6,awayTeamId=t43,homeScore=1,awayScore=5,scorers=[football.domain.Score@3d5bed54[567825,AWAY,2011-08-28 14:05:05.0,34,GOAL,哲科,,FIRST_HALF

目前我每次都在我的 bean 上覆盖 toString()。在 JSP 中有类似于 PHP 的 print_r 的东西会很棒。任何人都知道如何停止由这个问题引起的我永远的头痛。

【问题讨论】:

  • 这可能不是您问题的直接解决方案,但您可能需要查看 ReflectionToStringBuilder。请看这个问题:stackoverflow.com/questions/3149951/…
  • @JB Nizet 使用调试器?我是 php 开发人员而不是 java,但我的新工作意味着我会做 java。至少从前端的角度来看。所以我想我可以自己用谷歌搜索,但有什么建议吗?

标签: jsp debugging el tostring


【解决方案1】:

导入 Jackson JSON 库并执行以下操作(假设“myList”是您已经定义的列表/地图):

 ObjectMapper mapper = new ObjectMapper();
 System.out.println( mapper.defaultPrettyPrintingWriter().writeValueAsString(myList) );

这会将您的完整列表对象打印为标准输出的字符串。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您可以使用 Pojomatic 库。

    如果你使用maven,添加依赖到pom.xml

    <dependency>
        <groupId>org.pojomatic</groupId>
        <artifactId>pojomatic</artifactId>
        <version>1.0</version>
    </dependency>
    

    然后将@AutoProperty 注释添加到您要阅读的类中,例如PostVo.java

    并且,像这样覆盖 toString 方法:

    @Override
     public String toString() {
         return Pojomatic.toString (this);
    }
    

    您可以覆盖hashCode()equals(Object obj)

    @Override
     public boolean equals(Object obj) {
         return Pojomatic.equals (this, obj);
    }
    
    @Override
     public int hashCode() {
         return Pojomatic.hashCode (this);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      相关资源
      最近更新 更多