2010-11-08 4 views
4

Я получаю следующее сообщение об ошибке:Spring BindingResult Ошибка

java.lang.IllegalStateException: Neither BindingResult 
nor plain target object for bean name 'billingInfoCommand' 
available as request attribute 

My JSP выглядит следующим образом:

<form:form commandName="billingInfoCommand" method="post" 
onsubmit="return checkVals()"> 

Мой контроллер выглядит следующим образом:

public class BillingInfoController extends FusionFormController { 
    protected final Log logger = LogFactory.getLog(getClass()); 
    private FieldAccessService fieldAccessService; 

     public BillingInfoController(){ 
     setCommandClass(CommonCommand.class); 
     setCommandName("billingInfoCommand"); 
    } 

    protected Map referenceData(HttpServletRequest request,Object command, Errors errors) throws Exception { 

     CommonCommand commonCommand=(CommonCommand)command; 
     HashMap<String,Object> refDataMap=new HashMap<String,Object>(); 
     refDataMap.put("billingTypes",this.getLookupValsAsMap("getBillingTypes")); 
     Long stageId=commonCommand.getEmeaMain().getStageId(); 
     refDataMap.put("requiredFields",requiredFields); 
     return refDataMap; 
    } 


    public Object formBackingObject(HttpServletRequest request){ 
     BillingInfo billingInfoObj=null; 
     Long cepWorkItemNo=null; 
     CommonCommand billingInfoCommand=new CommonCommand(); 
     try{ 
     cepWorkItemNo=new Long(request.getParameter("cep_work_item_no")); 
     }catch(NumberFormatException e){ 
     } 
     if(cepWorkItemNo==null){ 
      billingInfoObj=new BillingInfo(); 
     }else{ 
      billingInfoObj=(BillingInfo)domainService.getDomainObject(BillingInfo.class,cepWorkItemNo); 
     } 
     if(billingInfoCommand.getBillingInfo()==null) 
      billingInfoCommand.setBillingInfo(billingInfoObj); 
     if(billingInfoCommand.getEmeaMain()==null) 
      billingInfoCommand.setEmeaMain(emeaMain); 
     return billingInfoCommand; 
    } 
} 

Мой Pojo класс выглядит следующим образом:

public class BillingInfo { 

    private Integer billingId; 

    public Integer getBillingId() { 
     return billingId; 
    } 
    public void setBillingId(Integer billingId) { 
     this.billingId = billingId; 
    } 
} 

Примечание

Я отправил только соответствующие фрагменты кода здесь. Я не уверен, почему я упоминаю об ошибке IllegalStateException, и некоторые полезные указатели будут оценены.

Также, что является нормальной причиной получения Neither BindingResult nor plain target object for bean name x available as request attribute ошибок?

Полный Трассировка стека

- java.lang.IllegalStateException: 
    Neither BindingResult nor plain 
    target object for bean name 
    'billingInfoCommand' available as 
    request attribute 
     java.lang.IllegalStateException: Neither BindingResult nor plain 
    target object for bean name 
    'billingInfoCommand' available as 
    request attribute at 
    org.springframework.web.servlet.support.BindStatus.(BindStatus.java:148) 
    at 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:179) 
    at 
    org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.resolveCssClass(AbstractHtmlElementTag.java:404) 
    at 
    org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:380) 
    at 
    org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:89) 
    at 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:90) 
    at 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:77) 
    at 
    org.apache.jsp.WEB_002dINF.jsp.globalecep.ap.billing_005finfo_jsp._jspx_meth_form_005flabel_005f0(billing_005finfo_jsp.java:1243) 
    at 
    org.apache.jsp.WEB_002dINF.jsp.globalecep.ap.billing_005finfo_jsp._jspService(billing_005finfo_jsp.java:363) 
    at 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) 
    at 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) 
    at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:565) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:493) 
    at 
    org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:965) 
    at 
    org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:600) 
    at 
    org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137) 
    at 
    org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177) 
    at 
    org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756) 
    at 
    org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881) 
    at 
    org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473) 
    at 
    org.apache.jsp.WEB_002dINF.fusion.jsp.tab_005ftemplate_jsp._jspx_meth_tiles_005finsert_005f2(tab_005ftemplate_jsp.java:1807) 
    at 
    org.apache.jsp.WEB_002dINF.fusion.jsp.tab_005ftemplate_jsp._jspService(tab_005ftemplate_jsp.java:307) 
    at 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) 
    at 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) 
    at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395) 
    at 
    org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311) 
    at 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:145) 
    at 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:251) 
    at 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1144) 
    at 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:880) 
    at 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:793) 
    at 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476) 
    at 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431) 
    at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627) 
    at 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879) 
    at 
    org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at 
    org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at 
    org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at 
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at 
    java.lang.Thread.run(Thread.java:595) 

Servlet Mapping Файл конфигурации:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
          http://www.springframework.org/schema/aop 
          http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> 


    <bean id="apbillingInfoController" class="ap.BillingInfoController"> 
     <property name="queryService" ref="queryService" /> 
     <property name="domainService" ref="domainService" /> 
     <property name="formView" value="ap_billinginfo"/> 
     <property name="validator" ref="apbillingInfoValidator" /> 
     <property name="fieldAccessService" ref="fieldAccessService"/> 
    </bean> 

    <bean id="apbillingInfoValidator" class="validator.ap.BillingInfoValidator"> 
      <property name="queryService" ref="queryService" /> 
    </bean> 

    <bean id="apcompanyBillingInfoController" class="ap.company.COMPANYBillingInfoController"> 
     <property name="commandName" value="companyBillingInfoBean"/> 
     <property name="commandClass" value="command.ap.company.COMPANYCommonCommand"/> 
     <property name="queryService" ref="queryService" /> 
     <property name="domainService" ref="domainService" /> 
     <property name="formView" value="ap_companybillinginfo"/> 
     <property name="validator" ref="apcompanyBillingInfoValidator" /> 
     <property name="fieldAccessService" ref="fieldAccessService"/> 
    </bean> 

    <bean id="apcompanyBillingInfoValidator" class="validator.ap.company.COMPANYBillingInfoValidator"> 
     <property name="fieldAccessService" ref="fieldAccessService"/> 
     <property name="queryService" ref="queryService" /> 
    </bean> 
     <property name="mappings"> 
     <props> 
      <prop key="/ap_billing.htm">apbillingInfoController</prop> 
     </props> 
     </property> 
    </bean> 

     <property name="mappings"> 
     <props> 
      <prop key="/company_ap_billing.htm">apcompanyBillingInfoController</prop> 
     </props> 
     </property> 
    </bean> 
</beans> 

Спасибо.

+0

Что такое 'BillingInfoController'? – skaffman

+0

его класс моего контроллера, позвольте мне обновить код, чтобы включить его там. – Rachel

+0

@ skaffman-обновил вопрос и включил 'BillingInfoController' там. – Rachel

ответ

2

Ошибка сама возникает, когда отображаются ваши jsp. Я предполагаю, что у вас есть JSP, возможно, с тегом типа (яровой: затруднительный вызывает тот же вопрос)

<form:form modelAttribute="billingInfoCommand"> 
... 
</form:form> 

Когда он делает СПЯ, он ищет фасоль называется billingInfoCommand в Вашей области запроса и делает его доступным для выражений jstl (между прочим). Когда в области запроса нет объекта, создается исключение, которое вы видите.

Edit:

То хорошо видеть, что вы не получали какие-либо ошибки, от удаления всего кода. Следующее, теперь, попробуйте напрямую взглянуть на область запроса.

<div>The request scope is: ${requestScope}</div> 
<div>The command is: ${requestScope.billingInfoCommand}</div> 

Если вы видите что-то вроде

The область запроса является: javax.servlet.jsp.el.ImplicitObjectELResolver ......
Команда:

Тогда ваш боб фактически не находится в области запроса. Следующее, что вам нужно посмотреть, - это то, где объект обратной привязки попадает в область запроса. Первая мысль заключается в том, что метод formBackingObject может иметь какое-то отношение к его вводу в запрос.

+0

Но в моем случае у меня есть 'billingInfoCommand' в области запроса, и поэтому я не уверен, почему я получаю эту ошибку, любую подсказку? – Rachel

+0

Также из jsp мой вызов: '' – Rachel

+0

Я говорил удалить это

(прокомментировать) и попытаться загрузить страница. Тогда ссылка на этот объект исчезнет, ​​и потенциально страница загрузится. Затем вы узнали, что ваш объект команды терялся в контроллере до того, как было показано представление (showForm (...)) и т. Д. – Matt

0

Это похоже на неправильную проводку контроллера/вида. Я говорю это, потому что я не вижу ссылки на BilingInfoController в вашей трассировке стека. Должна быть, по крайней мере, ссылка на этот контроллер для handleRequest/Internal для загрузки formBackingObject.

+0

Я обновил свой вопрос с конфигурационным файлом, который имеет контроллер и отображение отображения, можете ли вы посмотреть на него? – Rachel

+0

Stacktrace верна - 'DispatcherServlet.render()' вызывается после того, как контроллер возвратил 'ModelAndView'. – axtavt

+0

@axtavt - Так что может быть возможной причиной появления такого сообщения об ошибке, любой идеи? – Rachel

0

Убедитесь, что вы устанавливаете объект привязки или объект Display в запросе с помощью

и это должно быть помещено перед Binding объекта используются или перед каким-либо включать Jsp тегов ниже

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