【问题标题】:Struts html html:text does not close input type="text" tagsStruts html html:text 不关闭输入 type="text" 标签
【发布时间】:2009-01-15 11:06:13
【问题描述】:

我使用 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 的名称。

【问题讨论】:

  • 您应该接受 Phil Sacre 的回答,而不是仅仅将其放在问题中。

标签: struts struts-html


【解决方案1】:

你不能只使用&lt;html:xhtml/&gt;吗?

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

您也可以使用&lt;html:html xhtml="true"&gt;

【讨论】:

  • &lt;html:xhtml/&gt; 构造在我开发的网站上运行良好。 (它必须这样做,因为生成的标记是通过 AJAX 调用返回的,这将拒绝无效的 XML)您提供的所有其他示例也与我的匹配。您使用的是哪个版本的 struts?
  • 一次放置所有瓷砖?我的 struts 项目中有很多图块,而不是在每个图块中插入 &lt;html:xhtml/&gt;,有没有办法/地方一劳永逸?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2014-01-13
      • 1970-01-01
      相关资源
      最近更新 更多