我知道我的问题也有类似的问题,但是我无法让它发挥作用。但请耐心等待。
这是我的豆子
public class FLTQuestionnaireBean
{
private int myQuestionId;
private int myQuestionNum;
private String myQuestion;
private String myQuestionAnswer;
private String myQuestionType;
private String myQuestionModule;
private String myQuestionStrand;
private String myQuestionDifficulty;
// getters and setters here
}
我的包装类:
public class QuestionnaireBeanWrapper
{
private List<FLTQuestionnaireBean> myQuestionnaireBeanList;
public void add( FLTQuestionnaireBean questionnaireBean )
{
myQuestionnaireBeanList.add( questionnaireBean );
}
//getter and setter here
}
编辑:将modelAttribute从$ {wrapper}更改为“wrapper” 春天表格
<form:form id="reading-form" action="../index/FLT_evaluate_reading.do" method="POST" modelAttribute="wrapper">
<c:forEach items="${ wrapper.questionnaireBeanList }" varStatus="i">
<form:input path="questionnaireBeanList[${i.index}].questionId" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].questionNum" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].question" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].questionAnswer" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].questionType" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].questionModule" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].questionStrand" type="text"/>
<form:input path="questionnaireBeanList[${i.index}].questionDifficulty" type="text"/>
</c:forEach>
</form:form>
控制器
@RequestMapping( value = "/index/FLT", method = RequestMethod.GET )
public String indexFLT( @RequestParam( defaultValue = "" )
String message, @RequestParam( defaultValue = "" )
String messageType, ModelMap model )
{
model.addAttribute( "message", message );
model.addAttribute( "messageType", messageType );
QuestionnaireBeanWrapper wrapper = new QuestionnaireBeanWrapper();
wrapper.add( new FLTQuestionnaireBean() );
wrapper.add( new FLTQuestionnaireBean() );
model.addAttribute( "wrapper", wrapper );
return "als-questionnaire/flt";
}
我在运行应用程序时遇到异常。我从第一个<form:input..
开始收到错误我的堆栈跟踪:
编辑:更改stactrace
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'com' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116)
...
你能告诉我我做错了什么吗?我真的需要帮助。提前致谢。
答案 0 :(得分:2)
在包装类中检查get-er的拼写它应该是这样的
public List<FLTQuestionnaireBean> getQuestionnaireBeanList{
return myQuestionnaireBeanList
};
答案 1 :(得分:1)
更改此
<form:form id="reading-form" action="../index/FLT_evaluate_reading.do" method="POST" modelAttribute="${ wrapper }">
到
<form:form id="reading-form" action="../index/FLT_evaluate_reading.do" method="POST" modelAttribute="wrapper">
form
标记的modelAttribute
元素需要模型属性的名称,而不是您从toString()
获得的对象本身(或更确切地说是${wrapper}
结果)。
提示是
BindingResult和bean名称的明确目标对象'com'
我确定你是否
wrapper.toString()
并在控制器中打印结果,您将看到类似
的内容com.somepackage.QuestionnaireBeanWrapper
它尝试使用它来解析模型属性,在.
之前解析每个标记,在Model
属性中找不到的第一个标记失败。在这种情况下,com
属性中没有任何名为Model
的内容,因此会抱怨并失败。