在 JSP 中,输入标记中的路径和值属性有何作用?表单前缀如何影响它们?

发布于 2024-10-01 12:15:30 字数 1078 浏览 3 评论 0原文

只是想要一个直接问题的明确答案 - 谷歌结果到处都是,或者没有解决您将在下面看到的组合。

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

<form:input id="theId" path="path.copied.directly.fromSomewhereElse"
    cssClass="contentTextInput" cssStyle="width: 229px" />

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

<form:input id="theId" path="path.copied.directly.fromSomewhereElse"
    value="blah" cssClass="contentTextInput" cssStyle="width: 229px" />

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

<form:input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" />

这实际上也引发了异常 - 但后来我删除了表单前缀并且它基本上起作用了。你看,cssClass 的效果现在消失了;它看起来像一个常规的、不受影响的输入文本框。这是到目前为止的代码。

<input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" />

这些属性(和前缀)到底做了什么才能使这种混合搭配发挥作用?

Just wanted a clear answer for a direct question -- google results have been all over the place or don't address the combos you'll see below.

I'm generally a JSP newbie and have been screwing around with the following code.

<form:input id="theId" path="path.copied.directly.fromSomewhereElse"
    cssClass="contentTextInput" cssStyle="width: 229px" />

When I put that into my JSP page and load my website, it works fine and looks as my cssClass defines it. Then I start messing with it because I want it to display a default value.

<form:input id="theId" path="path.copied.directly.fromSomewhereElse"
    value="blah" cssClass="contentTextInput" cssStyle="width: 229px" />

Suddenly, HTTP 500, an org.apache.jasper.JasperException! So I decide to remove the path altogether, while leaving in the value. This is just step 1 in something I know works because of prior experience. The code is now:

<form:input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" />

That actually throws an exception, too -- but then I remove the form prefix and it works-- mostly. You see, the cssClass's effects are now gone; it looks like a regular, unaffected input textbox. Here's the code so far.

<input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" />

What exactly do these attributes (and prefix) do that makes this mix-and-match work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

樱&纷飞 2024-10-08 12:15:30

我猜您正在处理一个依赖于 JSP 自定义标记库的 jsp 页面,该标记库是 Spring 框架的一部分。以下是 标签value 不是此自定义标记的有效属性,您可以在我上面提供的文档链接中看到。当您删除 form: 时,您会将标记转换为普通的旧 HTML 标记,这就是您的错误此时消失的原因。这也是你的 css 停止工作的原因。 cssClass 不是 HTML 标记的正确属性。它只是。他们在 jsp 自定义标记库中将其称为 cssClass,最有可能避免与 Object.getClass() 方法发生较低级别的冲突(长话短说,请相信我的话) )。

I'm guessing you're dealing with a jsp page that relies on a JSP custom tag library that's part of the Spring Framework. Here are the docs for the <form:input> tag. value is not a valid attribute for this custom tag as you can see in the docs link I provided above. When you remove the form:, you're turning the tag into a plain old HTML <input> tag which is why your error is going away at that point. It's also why your css stops working. cssClass is not the correct attribute for the HTML <input> tag. It's simply class. They called it cssClass in the jsp custom tag lib most likely to avoid a lower level collision with the Object.getClass() method (long story, just take my word for it).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文