一尘不染

将struts2从2.3.16更新到2.3.32(修复了S2-045)后,JSP文件无法解析某些Objects的字段

jsp

最近,我们在固定的struts2的 “S2-045”
的疑难问题。更新了所有struts2相关的jar文件,包括freemarkerognlxWork,等。我tomcat8用来部署动态Web项目。Exceptions启动tomcat服务器时没有任何时间。但是似乎出现了一些
问题 :应该在jsp页面上显示一些值(从db获取), 不再显示
。没有Exceptions抛出。我还可以看到,我已经正确地拥有了对象Action Classes


以下是一些例子


    // index.jsp ----- here is the list I want to show on the page.
    // the list is the type of List<News> (Class News is my bussiness Class).
    // I want to get the 'fTitle' and 'fCreatetime_s' from 'News' but they 
    //     do not show up! (This used to be working very well.)
    <s:bean name="org.ulibrary.web.Getarclist">
      <s:iterator value="list">
        <li>
            <span class="listTitle">
                 <a target="_blank" href="ViewArc.action?   uuid=${UUID}">${fTitle}</a>
             </span>
            <span class="listDate">${fCreatetime_s}</span>
        </li>
      </s:iterator>
    </s:bean>
    //=================================================================

以下是相关字段id News.java

    // News.java (**just some ralated fields**)
    class News{
        @Id
        @GeneratedValue(generator = "system-uuid")
        @GenericGenerator(name = "system-uuid", strategy = "uuid")
        @Column(name = "f_uuid", length = 32, unique = true)
        private String UUID;

        @Column(name = "f_title", length = 200)
        private String fTitle;

        @Transient
        private String fCreatetime_s;

        public String getUUID() {
            return UUID;
        }
        public void setUUID(String uuid) {
            UUID = uuid;
        }

        public String getFTitle() {
            return fTitle;
        }


        public void setFTitle(String title) {
            fTitle = title;
        }

        public String getFCreatetime_s() {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            return formatter.format(Long.valueOf(fCreatetime));
        }


        public void setFCreatetime_s(String createtime_s) {
            fCreatetime_s = createtime_s;
        }
    }

然后 GetarcList.java

    //GetarcList.java (just include some related fields)
    class GetarcList{
        private List list;

        public void setList(List list) {
            this.list = list;
        }

        //!!!!!!$$$$$$$$--- Attention -----$$$$$$$$$!!!!!!!!!!!
        // this method returns a List<News> , I can successfully get every value of 'News' in the list
        public List getList() throws AuctionException{
            String orderby_str = (String) OrderByMap.get(String.valueOf(orderby));
            list = webTagManager.getArcList(row, typeid, titlelen, infolen, orderby_str + " " + orderway);
            return list;
         }

    }

我认为这可能是由OGNL或JSP相关的jar文件引起的。我index.jsp或我的Java文件中没有发现任何问题。


阅读 325

收藏
2020-06-08

共1个答案

一尘不染

您需要使用以下格式的getter / setter。仅以一个小写字母开头的属性不大写。

    public String getfTitle() {
        return fTitle;
    }


    public void setfTitle(String title) {
        fTitle = title;
    }
2020-06-08