1

I want to have a clickable image which sends two parameters to my action on click. I tried the following with <h:graphicImage>.

<h:graphicImage url="/pic/down.png" alt="download">
    <h:outputLink action="#{file.download}">
        <f:param name="id" value="#{file.id}"></f:param>
        <f:param name="name" value="#{file.name}"></f:param>
    </h:outputLink>
</h:graphicImage> 

However, it didn't work. How do I properly achieve this?

4

1 回答 1

4

如果您了解基本的 HTML会更容易。纯 HTML 格式的可点击图片如下所示:

<a href="..."><img src="..." /></a>

但是,您的 JSF 代码生成的是这样的(右键单击,在浏览器中查看源代码以查看它):

<img src="..."><a href=" ..." /></img>

这是无效的HTML。你需要交换它们。

此外,我不确定这是否是不小心摆弄/在黑暗中射击的结果,action<h:outputLink>. 您可能打算使用<h:commandLink>.

所以,总而言之,这应该做:

<h:commandLink action="#{file.download}"> 
    <h:graphicImage value="/pic/down.png" alt="download" />
    <f:param name="id" value="#{file.id}" />
    <f:param name="name" value="#{file.name}" />
</h:commandLink>

(确保这是放置在<h:form>

#{file}但是,我不确定将属性传递回显然与#{file}您调用操作的实例完全相同的实例是否有意义。您也可以省略这些<f:param>内容并直接在操作方法中访问属性。

<h:commandLink action="#{file.download}"> 
    <h:graphicImage value="/pic/down.png" alt="download" />
</h:commandLink>
于 2013-04-11T15:17:44.587 回答