当前位置: 首页 > 知识库问答 >
问题:

如何通过使用struts2操作单击按钮获得表元素的id

宓季同
2023-03-14
package it.unirc.pwm.wynd.action.cliente;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

import it.unirc.pwm.wynd.pojo.customer.Customer;
import it.unirc.pwm.wynd.pojo.order.Order;
import it.unirc.pwm.wynd.pojo.order.OrderDAO;
import it.unirc.pwm.wynd.pojo.order.OrderDAOFactory;
import it.unirc.pwm.wynd.pojo.product.Product;
import it.unirc.pwm.wynd.pojo.product.ProductDAO;
import it.unirc.pwm.wynd.pojo.product.ProductDAOFactory;

public class BuyProduct extends ActionSupport implements SessionAware {


    private static final long serialVersionUID = 1L;
    private Customer customer;
    private Product Product;
    private Order order = new Order();
    private Map<String,Object> session; 

    public Customer getCustomer() {
        return customer;
    }
    
    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public Product getProduct() {
        return product;
    }
    
    public void setProduct(Product product) {
        this.product = product;
    }

    public Order getOrder() {
        return order;
    }
    
    public void setOrder(Order order) {
        this.order = order;
    }
    
    public Map<String,Object> getSession() {
        return session;
    }
    
    public void setSession(Map<String,Object> session) {
        this.session = session;
    }

    public String execute() throws Exception {
        Customer customer = (Customer) session.get("customer");
        if(customer != null) {
            System.out.println("customer " + customer.getUsername() + " in session");
        }else {
            return INPUT;
        }
        ProductDAO productDAO = ProductDAOFactory.getDAO();
        OrderDAO orderDAO = OrderDAOFactory.getDAO();
        Product product = productDAO.getProductById(productId);  // i need this
        order.setCustomer(customer);
        order.setProduct(product);
        orderDAO.save(order);
        return SUCCESS;
    }


}
<table class="innertube">
                    <thead>
                        <tr>
                            <th style="display: none;">Id</th>
                            <th>Name</th>
                            <th>Quantity</th>
                            <th>Category</th>
                            <th>Price</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>

                        <s:iterator value="list">
                            <tr>
                                <td style="display: none;"><s:property value="productId" /></td>
                                <td><s:property value="productName" /></td>
                                <td><s:property value="quantity" /></td>
                                <td><s:property value="category" /></td>
                                <td><s:property value="price" /> &euro;</td>
                                <td><a
                                    href="BuyProduct.action"><button
                                            class="button">
                                            <i class="fa fa-fw fa-cart-plus"></i>
                                        </button></a></td>
                            </tr>
                        </s:iterator>
                </table>

共有1个答案

潘振国
2023-03-14

您需要将所选项的id发送到操作,否则它将不知道选择了什么。您至少可以通过以下两种方式来实现:

  1. 提交表单而不是使用链接,并将id放入隐藏的表单字段

类似于这样的内容(我有一段时间没有使用Struts2,所以可能会出现错误):

<s:form action="BuyProduct.action">
  <s:hidden name="selectedProduct" value="%{productId}"/>
  <s:submit/>
</s:form>
<s:url value="BuyProduct.action" var="buyUrl">
   <s:param name="selectedProduct" value="%{productId}" />
</s:url>
<a href="${buyUrl}"> ... </a>
 类似资料:
  • 问题内容: 单击按钮后,我将尝试呈现一个段落。 这是我的代码。 在这里,我试图在单击按钮时呈现“你好朋友”。但是没有用。 问题答案: 这不是正确的方法,因为它是一个事件处理程序,它将不呈现元素,您需要的是“元素的条件呈现”。 有关详细信息,请参阅“文档”。 条件渲染 。 脚步: 1-使用具有初始值的状态变量。 2-点击按钮将值更新为。 3-使用该状态值进行条件渲染。 工作代码:

  • 我想单击表ID“ContractDesc”、“EEE”内容中的单元格: HTML页面: 我的代码不起作用: 和 错误是: 硒。常见的例外情况。NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:”//*[@id=“1”]/td[2]”

  • 问题内容: 我有一个listView,其中每一行在行布局中都有一个按钮。但是,这似乎使行本身不可单击。如何使按钮和行均可单击? 谢谢。 问题答案: 您需要像这样在列表上设置itemsCanFocus: 使按钮可单击。然后,您将需要使用自己的适配器,并在getView中返回一个可单击且可聚焦的视图。您还将丢失默认的突出显示状态,因此您需要将它们与背景资源放在一起。这样做: 返回视图之前返回到视图。

  • 问题内容: 我创建了一个简单的电话目录,并且能够通过单击按钮来打开Whatsapp联系人。 这是示例代码: 如何通过单击android中的按钮来打开Whatsapp组? 希望给我任何建议! 问题答案: 您必须使用群组链接。当用户安装您的应用程序时,您应该要求他们从whatsapp组信息中复制组链接,然后将其存储以直接从您的应用程序访问该组。该链接仅对群组管理员可见,因此,如果用户不是管理员,则应指

  • 问题内容: 我正在使用精美的框创建弹出窗口,并使用iframe在其上加载另一个页面。这是我的代码 它成功加载页面并执行相应的操作。但是,它没有关闭弹出窗体,而是在弹出窗口本身内部加载了弹出源窗体。我想在工作完成后关闭弹出窗口,然后返回到从其生成弹出窗口的主菜单页面。如何在弹出窗口的按钮单击上实现此目的。 此致Rangana 问题答案: 拨电至 根据http://fancybox.net/faq 如

  • 我有一个包含三个滑动操作的列表项,如下所示: 常规列表项和按钮是在xml中定义的两种不同布局。 为了显示按钮操作,我使用了< code > ItemTouchHelper。简单回调。在< code>onChildDraw中,我告诉只绘制项目列表项目的x轴,直到它达到按钮控件的宽度。 这是一个简短的布局文件,演示了我构建用户界面的方式: 我的问题是按钮不可点击。到目前为止,我尝试过: < li >设