Связывающие свойства примитивных типов оболочек с Spring MVC - PullRequest
2 голосов
/ 19 октября 2010

Мне кажется, что 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)

Как только я изменил тип назначенного свойства (переменная getter, setter и instance) с Boolean на boolean, онработал нормально.

Кто-нибудь может подтвердить, что Spring MVC не может связать свойства примитивных типов-оболочек?Если так, есть ли обходной путь?Я не могу изменить тип свойства на логическое, потому что нулевое значение в этом свойстве что-то значит для моего приложения.

Спасибо.

Ответы [ 2 ]

13 голосов
/ 19 октября 2010

Spring MVC отлично работает с Boolean.

Эта ошибка может появиться, если ваш геттер для Boolean имеет имя isAssigned(). Согласно соглашениям об именах JavaBeans , только boolean может иметь эту форму имени получателя, Boolean должно иметь getAssigned().

0 голосов
/ 19 октября 2010

В качестве обходного пути можно создать / зарегистрировать собственные редакторы свойств.

Другим обходным решением будет добавление второго установщика, который позволяет вам установить свойство как «логическое значение». (Возможно, вам придется поиграться с вашими API, чтобы подорвать «полезную» настойчивость Spring, что типы параметров / результатов типов getter и setter соответствуют. то же логическое свойство.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...