2009-01-15 57 views
3

我使用struts-html生成表單字段。Struts html html:text不會關閉input type =「text」標籤

例如:

<%@ 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/> 

注:如果您使用的瓷磚,像我一樣,直接使用您的包括JSP中。它不會從您的基本模板文件繼承。

注意:在xhtml模式下,您不能在html:form標籤內使用sytleId。這不是問題,因爲id屬性會自動生成以存儲您的bean名稱。

+0

您應該接受Phil Sacre的回答,而不是僅僅將它放在問題中。 – 2009-01-15 13:59:37

回答

6

你不能只使用<html:xhtml/>

使用的頁面這個標籤告訴所有其他html標記庫標記來呈現自己作爲XHTML 1.0

另外,您可以使用<html:html xhtml="true">

+0

``構建在我開發的網站上工作得很好。 (並且必須這樣做,因爲生成的標記是通過AJAX調用返回的,這會拒絕無效的XML) 您提供的所有其他示例都與我的相匹配。 您使用的是哪個版本的struts? – belugabob 2009-01-15 12:27:33

0

input標籤不必在HTML中關閉,所以我猜測Struts並不知道您正在嘗試生成XHTML。可悲的是,我的Struts-fu是如此古老,我不知道如何去解決它。也許你應該回到HTML而不是XHTML;當您使用其他名稱空間(如SVG或MathML)時,XHTML纔會真正實現。

0

必須有支持實際代的Java代碼。抓取庫的來源,因爲它已經開放源代碼並檢查代碼是否在附加結束標記括號'>'時查看某些參數。如果完全沒有這樣做,您可以修改庫,使用補丁版本並貢獻補丁。

相關問題