2013-07-31 1 views
0

Я новичок в Spring и обновляю веб-приложение Spring 2.5 до 3.2.3. Я получаю сообщение об ошибке с первой страницы приложения. Ошибка в Invalid property 'commandClass' класса bean. Это веб-приложение работает около 5 лет, поэтому проблема должна быть весной от 2,5 до 3,2 изменений. У меня должно быть что-то неправильное, какие-то идеи?Ошибка обновления 2.5-2.2: недопустимое свойство «commandClass» класса bean

Полная ошибка:

Error creating bean with name '/new_candidate.html' defined in ServletContext resource [/WEB-INF/webapp-servlet.xml]: 

Ошибка настройки значения свойств; Вложенное исключение - org.springframework.beans.NotWritablePropertyException: Недопустимое свойство «commandClass» класса bean [org.myorg.app.web.ScoreChangeController]: Свойство «commandClass» bean-свойства не доступно для записи или имеет неверный метод setter. Соответствует ли тип параметра сеттера типу возврата получателя?

Вот боб Защита от WebAPP-sevlet.xml:

<bean name="/new_candidate.html" class="org.myorg.app.web.ScoreChangeController" scope="session"> 
    <property name="commandClass" value="org.myorg.app.model.Database"/> 
    <property name="formView" value="generic"/> 
    <property name="candidateManager" ref="candidateManager"/> 
</bean> 

Контроллера:

package org.myorg.app.web; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.myorg.app.model.Database; 
import org.myorg.app.service.CandidateManager; 

import org.springframework.web.servlet.ModelAndView; 

import org.springframework.web.servlet.view.RedirectView; 
import org.springframework.web.bind.ServletRequestDataBinder; 
import org.springframework.validation.BindException; 
import org.springframework.web.util.WebUtils; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 


public class ScoreChangeController 
{ 

private CandidateManager candidateManager; 


protected Object formBackingObject(HttpServletRequest request) throws Exception { 

    Database defaultDatabase = new Database(); 
    defaultDatabase.setApptNo("16 digits"); 
    defaultDatabase.setAccessionNo("8 digits"); 
    defaultDatabase.setTstPkgId("12345678912345678912345"); 
    return defaultDatabase; 
} 


protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { 
     Database database = (Database)binder.getTarget(); 
    } 

public CandidateManager getCandidateManager() { 
    return candidateManager; 
} 

public void setCandidateManager(CandidateManager candidateManager) { 
    this.candidateManager = candidateManager; 
} 

public ModelAndView onSubmit(HttpServletRequest req, HttpServletResponse res, Object command, BindException errors) throws Exception { 

    if(WebUtils.hasSubmitParameter(req, "retrieve")) 
    { 
     candidateManager.retrieveData((Database)command); 

    } 
    return new ModelAndView(new RedirectView("success.jsp")); 

} 

} 

ответ

1

Вы пытаетесь придать свойство commandClass внутри ScoreChangeController фасоли, но я неспособный видеть какое-либо свойство с этим именем в этом контроллере, и, кроме того, он не является подклассом какого-либо конкретного контроллера, поэтому также нет шансов наследования.

Решение: Либо удалить инъекцию commandClass собственности из ScoreChangeController bean.

<bean name="/new_candidate.html" class="org.myorg.app.web.ScoreChangeController" scope="session"> 
<property name="formView" value="generic"/> 
<property name="candidateManager" ref="candidateManager"/> 

ИЛИ создать новое свойство в вашем ScoreChangeController, имеющее имя в качестве команды и создать сеттер и добытчик для этого.

+0

Свойство commandClass осталось от реализации Spring 2.5, оно должно быть устарело в 3.2. Я попробую удалить свойство. – Jim

+0

и то же самое, что я наблюдаю для свойства 'formView'. - Спасибо – saurav

+0

, когда я вывожу commandClass и FormView, я получаю: – Jim

 Смежные вопросы

  • Нет связанных вопросов^_^