2

我需要显示包含用户列表( 、 等)的表格idname并将删除指定用户的按钮放在最后一列。像这样的东西:

############################
| ID | name | ... | button |   
| ID | name | ... | button |
############################

我写过这样的代码:

<form action="/Struts/DeleteUser.do" name="myForm" id="myForm" method="post">
    <display:table name="sessionScope.AllUsersForm.usersList">
       <display:column property="id" title="ID" />
       <display:column property="name" title="Name" />
       ...........
       <display:column title="Delete">
            <input type="submit" value="Delete user" />
       </display:column>
    </display:table>
<form>

那么如何在我的 Action 类中识别按下的按钮呢?我已经尝试将隐藏字段放入带有按钮的部分并更改它的值,但没有任何反应。

更新:

我已经解决了问题。我用过这个:

<display:table name="sessionScope.AllUsersForm.usersList" 
  <%-- This ==> --%> id="item" <%-- <=== --%> >     
  ........
  <input type="submit"  value="Delete user" 
     onclick="document.getElementById('pressedButton').value = ${item.id}"/>

并创建了隐藏字段:

<input type="hidden" name="pressedButton" id="pressedButton" /> 
4

1 回答 1

0

例如,您可以通过为按钮命名来轻松做到这一点

<input name="action" type="submit" value="Delete user" />

现在在 bean 中,您的案例表单 bean 与操作关联,您应该创建一个属性

private String action;
public void setAction(String action){
  this.action = action;
}
public String getAction(){
  return action;
}

Struts 1 使用 commons beanutils 来填充表单 bean。当您提交表单时,字段值将通过 setter 填充。按钮字段也不例外。因此,它的值也将设置为action属性。然后你可以通过

if (action != null && action.equals("Delete user")){
  System.out.println("Button is: "+action);
}  

识别和执行按钮事件的最自然的 Struts 1 方法是将消息键值与按钮一起分派。例如

<html:submit><bean:message key="button.delete"/></html:submit>

"button.delete"消息资源键,应该在MessageResource.properties文件中

button.delete = Delete user

该操作应实施LookupDispatchAction并覆盖

@Override
public Map getKeyMethodMap() {
  Map<String, String> map = new HashMap<String, String>();
  map.put("button.delete", "delete");
  return map;
}

然后当动作被执行时,它将分派到map. 在这个示例方法delete中。

于 2013-06-15T19:49:06.707 回答