3

我使用 struts-html 生成表单字段。

例如:

<%@ taglib prefix="html" uri="/WEB-INF/taglibs/struts-html.tld" %>

<html:text property="email" styleId="email" size="44"/>

生成:

<input type="text" name="email" size="44" value="" id="email"> 

如上所示,生成的输入标签没有关闭。这会导致我的 html 无效。

struts-html.tld 包括:

<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>html</shortname>
<uri>http://struts.apache.org/tags-html</uri>

有谁知道为什么生成的输入没有关闭?有更新的版本吗?在哪里可以下载?

我尝试使用:

<html:html xhtml="true">

呈现为:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> 

但是,我的输入标签一直呈现未关闭状态。


解决方案:

使用标签:

<html:xhtml/>

注意:如果您像我一样使用 Tiles,请直接在包含的 jsp 中使用它。它不是从您的基本模板文件继承的。

注意:在 xhtml 模式下,您不能在 html:form 标签内使用 sytleId。这不是问题,因为 id 属性是自动生成的以存储您的 bean 的名称。

4

3 回答 3

6

你不能只用<html:xhtml/>吗?

在页面中使用这个标签告诉所有其他 html taglib 标签将自己呈现为 XHTML 1.0

或者,您可以使用<html:html xhtml="true">.

于 2009-01-15T11:18:43.583 回答
0

input标签不必在 HTML 中关闭,所以我猜 Struts 不知道您正在尝试生成 XHTML。可悲的是,我的 Struts-fu 太古老了,我不知道如何修复它。也许你应该回到 HTML 而不是 XHTML;XHTML 只有在您使用其他名称空间(例如 SVG 或 MathML)时才会真正发挥作用。

于 2009-01-15T11:10:35.817 回答
0

必须有一个支持 Java 代码来执行实际的生成。获取库的源代码,因为它已经开源,并检查代码在附加结束标记括号“>”时是否参考了一些参数。如果它根本不这样做,您可以修改库,使用补丁版本并贡献补丁。

于 2009-01-15T11:18:43.757 回答