问题
你想要使用户能够通过点击一个不在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 代码:
<
a
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"
/>
这种方式的缺点是,有些浏览器并不提供图像是可以点击的一些可视提示线索。因为图像嵌入到一个链接中,大多数浏览器都会在改变鼠标指针以提示该图像是可以点击的。