问题
使用Spring MVC框架开发搜索表单。
/WEB-INF/pages/tools/webserver.jsp – Spring mvc + form tag
<form:form method="post" commandName="searchForm"
action="${pageContext.request.contextPath}/tools/webserver/"
class="navbar-form pull-left" id="search-form">
Type a website :
<form:input path="domainName" type="text" width="165px"
placeholder="example - google.com" />
<button type="submit" class="btn btn-top-margin">Search</button>
</form:form>
Spring Controller
@Controller
@RequestMapping(value = "/tools", method = RequestMethod.GET)
public class ToolsController {
@RequestMapping(value = "/webserver", method = RequestMethod.GET)
public ModelAndView main() {
ModelAndView modelandView
= new ModelAndView("tools/webserver", "searchForm", "");
return modelandView;
}
}
访问页面时,它显示以下错误消息。
org.apache.jasper.JasperException: /WEB-INF/pages/tools/webserver.jsp(41,5)
According to TLD, tag form:input must be empty, but is not
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
org.apache.jasper.compiler.Parser.parseBody(Parser.java:1603)
org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:978)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1246)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1422)
org.apache.jasper.compiler.Parser.parseBody(Parser.java:1634)
org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:978)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1246)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1422)
org.apache.jasper.compiler.Parser.parse(Parser.java:130)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
解
该消息具有误导性,实际上,它表示form:input, domainName
为空,您需要将其与字段链接。 要修复它,只需创建一个具有domainName
的对象,然后通过@Controller
类将其链接。
public class SearchQuery {
private String domainName;
public String getDomainName() {
return domainName;
}
public void setDomainName(String domainName) {
this.domainName = domainName;
}
}
Spring Controller
@Controller
@RequestMapping(value = "/tools", method = RequestMethod.GET)
public class ToolsController {
@RequestMapping(value = "/webserver", method = RequestMethod.GET)
public ModelAndView main() {
ModelAndView modelandView
= new ModelAndView("tools/webserver", "searchForm", new SearchQuery());
return modelandView;
}
}
参考
标签: 春天MVC
翻译自: https://mkyong.com/spring-mvc/according-to-tld-tag-forminput-must-be-empty-but-is-not/