【问题标题】:Access jstl variable in servlet访问 servlet 中的 jstl 变量
【发布时间】:2012-04-14 12:14:39
【问题描述】:

我通过在 jsp 中迭代客户列表来填充客户数据。

<form action="CustomerUpdate" method="post">
<c:forEach var="listItems" items="${customers}">          
   <label> First Name: </label><c:out value="${listItems.fname}" />  
   <label> Last Name: </label><c:out value="${listItems.lname}" />
   <label> Address: </label><c:out value="${listItems.address}" /> &nbsp;
   <input type="submit" value="Edit" name="edit">
   <input type="submit" value="Delete" name="delete"><br />     
</c:forEach> 
</form>

现在在操作中编辑或删除我想跟踪哪些客户需要编辑/删除的每条记录。因此,在 servlet 中,我如何访问 var listItems 中的客户对象。如果不可能,我是否需要隐藏带有值的输入变量并使用 servlet 中的 getParameter 访问它们?

【问题讨论】:

    标签: java jsp servlets jstl


    【解决方案1】:

    这只是一个简单的例子。以这种方式更改您的代码:

    <c:forEach var="listItems" items="${customers}">          
      <form action="CustomerUpdate" method="post">
        <input type="hidden" value="${listItems.id}" name="id">
        <label> First Name: </label><c:out value="${listItems.fname}" />  
        <label> Last Name: </label><c:out value="${listItems.lname}" />
        <label> Address: </label><c:out value="${listItems.address}" /> &nbsp;
        <input type="submit" value="Edit" name="action">
        <input type="submit" value="Delete" name="action"><br />     
      </form>
    </c:forEach> 
    

    更新

    为每一行创建一个表单元素,并为每一行放置一个带有id 的隐藏字段。 因此,当您按下该按钮时,您将在请求中收到一个值,使您能够检测到该行。这样:

    String id = request.getParameter("id");
    String action = request.getParameter("action");
    

    现在您知道idaction 类型(编辑或删除)。

    替代解决方案

    不要使用表单和提交来调用您的操作,而是使用直接链接。

    <c:forEach var="listItems" items="${customers}">          
      <input type="hidden" value="" name="id">
      <label> First Name: </label><c:out value="${listItems.fname}" />  
      <label> Last Name: </label><c:out value="${listItems.lname}" />
      <label> Address: </label><c:out value="${listItems.address}" /> &nbsp;
      <button onclick="window.location.href='CustomerUpdate?action=edit&id=${listItems.id}'">Edit</button>
      <button onclick="window.location.href='CustomerUpdate?action=delete&id=${listItems.id}'">Delete</button>
    </c:forEach> 
    

    【讨论】:

    • 这里的问题是编辑按钮也显示了编辑的名字。所以我尝试了 。但是当我使用 request.getParameter("action") 访问它时,它会将值返回为 Edit 而不是 value 属性中的值
    • 好的,我用一个新建议更新了我的答案。然而,有许多不同的方法可以做到这一点。
    【解决方案2】:

    servlet 中检查点击了哪个按钮:

    if (request.getParameter("action") != null) //if action is not null
            {
                String action = request.getParameter("action");
    String id = request.getParameter("id");
    
                if (action.equals("edit")) //edit button clicked
                {
                   //do your work here
                }
                else if (action.equals("delete")) //delete button clicked
                {
                    //your work here
                }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多