내 궁극적 인 목표는 주석이있는 모델을 만들고 양식 입력에 대한 유효성 검사를 수행하는 것입니다. 일부 유효성 검사기를 작성하여 시도했지만 작동하지 않았습니다 (양식에는 sp를 입력 할 수있는 필드도 표시되지 않았으므로 유효성 검사를 테스트 할 항목이 없음) 처음부터 작은 단계로 시도했습니다. 첫 번째 단계로 어떤 종류의 유효성 검사를 시작하기 전에 모델 바인딩이 작동하도록 만들고 싶습니다.
간단한 시도로 mailItemModel 양식 http://www.javabeat.net/introduction-to-spring-web-flow-swf/를 사용했습니다 .
web.xml에 링크 된 servlet-config.xml에 다음 행을 추가했습니다.
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.mypackage.kumo.**" />
나는 다른 튜토리얼에서 그것을 가지고 있었고 이것이 전체 패키지를 스캔하는 것이라고 생각하고 변수에 모든 모델을 명시 적으로 지정할 필요가 없습니다. 제목 오류가 발생합니다. 또한 모델 클래스에 "@Component"를 추가해 보았습니다. 그러나 그것은 아무것도 바꾸지 않았습니다.
플로우 XML에 다음 추가를 시도했습니다.
<var name="MailItemModel" />
위의 링크 된 튜토리얼에서와 같이. 오류가 발생했습니다. 해당 요소 var "에는"class "속성이 필요하므로 대신 다음과 같이 만듭니다.
<var name="MailItemModel" class="com.mypackage.kumo.model.MailItemModel" />
하지만 이전과 같은 오류가 발생합니다.
내 흐름은 이제 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"
start-state="Start">
<var name="MailItemModel" class="com.mypackage.kumo.model.MailItemModel" />
<view-state id="Start" view="/Search" model="MailItemModel">
<transition on="entered" to="temp" />
<transition on="cancel" to="SubEnde" />
</view-state>
<view-state id="temp" view="/End" />
<view-state id="SubEnde" view="/Start" />
</flow>
Search.jsp (양식 발췌)
<form:form method = "post" modelAttribute = "mailItemModel">
Mail Username: <form:input path="username" />
<br />
<input type="submit" name="_eventId_entered" value="Entered" />
<input type="submit" name="_eventId_cancel" value="Cancel" />
</form:form>
Start.jsp 및 End.jsp는 lorem ipsum 콘텐츠가있는 정적 jsps입니다.
Stacktrace :
root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'mailItemModel' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116)
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422)
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspx_meth_form_005finput_005f0(Search_jsp.java:559)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspx_meth_form_005fform_005f0(Search_jsp.java:522)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspx_meth_dsx_005fcontent_002dbox_005f0(Search_jsp.java:478)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspx_meth_dsx_005fcontent_005f0(Search_jsp.java:439)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspx_meth_dsx_005fhtml_002dbody_005f0(Search_jsp.java:375)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspx_meth_dsx_005fhtml_005f0(Search_jsp.java:293)
org.apache.jsp.WEB_002dINF.jsp.Search_jsp._jspService(Search_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
org.springframework.webflow.mvc.servlet.ServletMvcView.doRender(ServletMvcView.java:55)
org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:187)
org.springframework.webflow.engine.ViewState.render(ViewState.java:296)
org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243)
org.springframework.webflow.engine.ViewState.resume(ViewState.java:221)
org.springframework.webflow.engine.Flow.resume(Flow.java:545)
org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258)
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169)
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
내가 무엇을 잘못하고 있지? 나는 동일한 오류의 다른 게시물을 살펴 보았지만 모두 컨트롤러의 URL에 @requestmapping을 사용하지만 Webflow를 사용하고 있기 때문에 컨트롤러를 사용하지 않습니다 (그리고 보이지 않을 것입니다). 정말 도움이되지 않습니다.
구성에 두 가지 결함이 있습니다.
구성에서 모델 객체의 이름을 지정했습니다 MailItemModel
( M 표시 ).
<var name="MailItemModel" class="com.mypackage.kumo.model.MailItemModel" />
보기에서 이름이 지정됩니다 mailItemModel
( m을 참고하십시오 ).
<form:form method = "post" modelAttribute = "mailItemModel">
흐름 구성에서 변경 mailItemModel
하거나보기 MailItemModel
에서 대 / 소문자를 포함하여 일치해야하는 이름을 사용 하십시오.
구성에 관하여.
<context:component-scan base-package="com.mypackage.kumo.**" />
base-package
속성은 기본 패키지의 이름 (들)이 스캔 만한다는 것입니다. 개미 스타일의 표현이 필요하지 않습니다. 결말을 제거하십시오 .**
.
<context:component-scan base-package="com.mypackage.kumo" />
의 사용이 <context:component-scan … />
이미 의미 하는 마지막 참고 사항 <context:annotation-config />
이므로 해당 구성 줄을 제거 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다