기록하는 개발자

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

웹 개발/Spring

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

gitseok 2024. 3. 27. 20:19

command가 뭘까 한참 찾다가 해당 페이지들을 일일이 주석처리해가다가 form:form 하위의 요소들을 주석하니 오류발생X

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
	at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:178)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:199)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:164)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:149)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:139)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122)
	at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:460)
	at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:357)
	at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:87)
	at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:83)

 

뒤늦게 보이는 하위 오류메세지의 tags.form

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

 

 

Spring 5부터 commandName을 사용하지 않고 modelAttribute로 form태그의 id로 지정됨

modelAttribute에 값이 들어있지 않으니


<!--사용자 입력 내용-->
<form:form  commandname="dataForm" name="dataForm" method="post" action="/action.do">

<!--화면 출력 내용-->
<form id="command" name="dataForm" commandname="dataForm" action="/action.do" method="post">

아래처럼 id가 command로 지정되고 form:label 등 하위 태그가 추가되었을때 오류 발생

 

<!--사용자 입력 내용-->
<form:form  modelAttribute="dataForm" name="dataForm" method="post" action="/action.do">

<!--화면 출력 내용-->
<form id="dataForm" name="dataForm"action="/action.do" method="post">

 commandName → modelAttribute 변경 후 정상 작동

 

 

 

개인적으로 정리한 내용을 간단하게 풀어 작성했습니다.
이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다.
Comments