根据TLD,标记形式:输入必须为空,但不能为空

本文介绍了在使用Spring MVC开发搜索表单时遇到的一个常见问题:'According to TLD, tag 'form:input' must be empty, but is not'. 解决方案是创建一个对象并用其链接字段,从而解决错误。" 112231271,10544076,Vue实战:身份验证与导航守卫,"['Vue', 'Vue实战', '身份验证', '路由守卫', 'Vuex']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

使用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;
		 
	}

}

参考

  1. Spring MVC视图表单处理

翻译自: https://mkyong.com/spring-mvc/according-to-tld-tag-forminput-must-be-empty-but-is-not/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值