第3.6式. 從圖像提交表單

問題

你想要使用戶能夠通過點擊一個不在HTML表單標簽中的圖像來提交表單。

動作要領

適應一個對JavaScript URL 的鏈接來提交表單:


<html:link href="javascript:document.myform.submit(  )">
    
<html:img page="/submit-form.gif" 
               alt
="Submit" border="0"/>
 
</html:link>


 

動作變化

Web 應用經常使用可點擊的圖像來提交表單而不是僅僅通過表單按鈕。Struts 的html:image標簽可以用來產生一個顯示圖像的HTML input type="image" 標簽。但是,對于復雜的 HTML 布局,并不總是能夠將圖像嵌入在表單<form> . . . </form>標簽之中。有些時候,一個 HTML 頁面可能在頁面的某一段可能有多個表單,而提交頁面的圖像則在頁面的另一個區域。比如,工具條風格的圖像按鈕。

上面的方法可以用于從表單之外的圖像提交表單。所顯示的圖像嵌套在html:link標簽中。該鏈接通過執行一行JavaScript來提交表單。在上面的代碼中,JavaScript 將提交名為MyForm 的表單。表單名稱必須匹配struts-config.xml文件中所配置的action元素的name屬性。下面是這種方法產生的HTML 代碼:

 

<href="javascript:document.myform.submit(  )">
    
<img src="/myapp/struts-power.gif"
         border
="0" alt="Submit">
</a>

 

雖然你可以直接使用上述HTML標記而不是Struts html標簽,如果那樣的話你將失去那些標簽所提供的特征。通過使用Struts tag,你就不是必須要指定context 名稱,并且你可以使圖像名稱和替換文本來自于資源束 (如果你需要的話)。

另一個辦法是使用html:img 標簽的onclick屬性:

 

<html:img page="/submit-form.gif"
       onclick
="document.MyForm.submit( );"
           alt
="Submit" border="0"/>

 

這種方式的缺點是,有些瀏覽器并不提供圖像是可以點擊的一些可視提示線索。因為圖像嵌入到一個鏈接中,大多數瀏覽器都會在改變鼠標指針以提示該圖像是可以點擊的。

如果你想要你的應用在瀏覽器禁止JavaScript的情況下也能夠進行,還應該在表單中的某處提供一個常規的提交按鈕。

 

相關招式

第3.9式會描述如何在表單的action屬性中指定的地方將表單提交到另外一個URL。