簡體   English   中英

原始包裝類型與Spring MVC的綁定性質

[英]Binding Properties of Primitive Wrapper Types with Spring MVC

在我看來,Spring MVC不能綁定原始包裝類型的屬性(例如Integer,Boolean等)。 當它嘗試綁定這些屬性時,它會拋出以下異常。

javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: org.springframework.beans.NotReadablePropertyException: Invalid property 'assigned' of bean class [model.domain.Employee]: Bean property 'assigned' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.WEB_002dINF.jsp.configuration.form.defaultForm_jsp._jspService(defaultForm_jsp.java:87)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.tiles.web.startup.TilesFilter.doFilter(TilesFilter.java:75)

一旦我將'assigned'屬性(getter,setter和instance變量)的類型從Boolean更改為boolean,它就可以正常工作。

任何人都可以確認Spring MVC無法綁定原始包裝類型的屬性嗎? 如果是這樣,有沒有解決方法? 我無法將屬性類型更改為boolean,因為此屬性中的null值意味着我的應用程序。

謝謝。

Spring MVC與Boolean工作正常。

如果Boolean的getter命名為isAssigned()則可能會出現此錯誤。 根據JavaBeans命名約定 ,只有boolean可能具有這種形式的getter名稱, Boolean應該具有getAssigned()

解決方法是創建/注冊您自己的屬性編輯器。

另一種解決方法是添加第二個setter,允許您將屬性設置為“boolean”。 (你可能需要擺弄你的API來破壞Spring的“有用”的堅持,即getter和setter類型的參數/結果類型匹配。如果我正在做這種事情,我通常會得到兩個不同名字的setter相同的邏輯屬性。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM