在JSP中,path和value属性在输入标记中的作用是什么,以及表单前缀如何影响它们?

Dan*_*nny 4 java attributes jsp input

只是想要一个直接问题的明确答案 - 谷歌搜索结果已经到处或者没有解决你将在下面看到的组合.

我通常是一个JSP新手,并一直在使用以下代码.

<form:input id="theId" path="path.copied.directly.fromSomewhereElse"
    cssClass="contentTextInput" cssStyle="width: 229px" />
Run Code Online (Sandbox Code Playgroud)

当我把它放到我的JSP页面并加载我的网站时,它工作正常,看起来像我的cssClass定义它.然后我开始搞乱它,因为我希望它显示默认.

<form:input id="theId" path="path.copied.directly.fromSomewhereElse"
    value="blah" cssClass="contentTextInput" cssStyle="width: 229px" />
Run Code Online (Sandbox Code Playgroud)

突然,HTTP 500,一个org.apache.jasper.JasperException!所以我决定完全删除路径,同时保留值.由于以前的经验,这只是我所知道的第一步.代码现在是:

<form:input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" />
Run Code Online (Sandbox Code Playgroud)

这实际上也引发了异常 - 但后来我删除了表单前缀并且它的工作原理 - 主要是.你看,cssClass的效果现在已经消失了; 它看起来像一个常规的,未受影响的输入文本框.这是迄今为止的代码.

<input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" />
Run Code Online (Sandbox Code Playgroud)

这些属性(和前缀)究竟做了什么才能使这种混合和匹配工作?

Asa*_*aph 6

我猜你正在处理一个依赖于JSP自定义标记库的jsp页面,它是Spring Framework的一部分.以下是<form:input>标签的文档.value不是此自定义标记的有效属性,您可以在我上面提供的文档链接中看到.当您删除时form:,您将标记转换为普通的旧HTML <input>标记,这就是您的错误在此时消失的原因.这也是你的css停止工作的原因.cssClass不是HTML <input>标记的正确属性.这很简单class.他们cssClass在jsp自定义标记lib中调用它最有可能避免与该Object.getClass()方法发生较低级别的冲突(长篇大论,只需听取我的意见).