如何使用 Struts2 中的 <s:a> 将数据从 JSP 发送到 Action?

How to send data from JSP to Action with <s:a> in Struts2?

我想实现点击标题,匹配的id发送给Action,但是Action中的id一直为0

A​​ction使用id在数据库中搜索匹配的记录并在另一个jsp中显示。

<s:iterator id="n" value="news">
<tr>
    <td>
    <s:url action="GETNEWS" var="getNews">
        <s:a href="%{getNews}">
            <s:property value="#n.title" />
            <s:hidden name="id" value="#n.id" />
        </s:a>
    </s:url>
    </td>
</tr>
</s:iterator>

使用 <s:param> 标签将值发送到 server.So 你的代码看起来像

<s:iterator id="n" value="news">
<tr>
    <td>
    <s:url action="GETNEWS" var="getNews">
        <s:param name="id"><s:property value="#n.id"/></s:param>
        <s:a href="%{getNews}">
            <s:property value="#n.title"/>
        </s:a>
    </s:url>
    </td>
</tr>
</s:iterator>

id in <s:iterator> 已弃用(除非您使用的是 aeon-old 版本)。请改用 var

<s:url> 中使用 <s:param>(并且,为了更好的编码,请记住指定命名空间)。
然后从<s:a>引用<s:url>

最后,确保您的操作正确Setter。

<s:iterator var="n" value="news">
<tr>
    <td>

        <s:url action="GETNEWS" namespace="/" var="getNews">
            <s:param name="id">
                <s:property value="#n.id" />
            </s:param>
        </s:url>

        <s:a href="%{getNews}">
            <s:property value="#n.title" />
        </s:a>

    </td>
</tr>
</s:iterator>