2013-06-15 3 views
2

사용자 목록 (id, name 등)이 포함 된 테이블을 표시하고 마지막 열에 지정된 사용자를 삭제하는 버튼을 배치해야합니다. 이런 식으로 뭔가가 : displaytag 및 Struts 1.3을 사용하는 JSP의 테이블 열 단추

<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 클래스 누르면 버튼을 식별 할 수

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

는이 같은 코드를 작성했습니다? 나는 이미 버튼으로 섹션에 숨겨진 필드를 놓으려고 시도했지만 값은 변경되었지만 아무 일도 일어나지 않았습니다.

업데이트 :

이미 해결 한 문제를. 나는이 사용했습니다 :

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

을 그리고 숨겨진 필드를 생성 :

당신은 쉽게에서

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

지금 예를 들어, 버튼에 이름을 부여하여 그것을 할 수

<input type="hidden" name="pressedButton" id="pressedButton" /> 
+0

간단한 솔루션 : 'form'과 여러 개의 submit 버튼을 사용하지 말고 각 행에 링크를 사용하십시오. 'Delete user' – Victor

답변

0

귀하의 경우, 귀하의 경우에는 행동과 관련된 콩을 형성, 당신은 속성을 만들어야합니다.

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

Struts 1은 commons beanutils를 사용하여 양식 bean을 채 웁니다. 양식을 제출할 때 필드 값은 설정자를 통해 채워집니다. 버튼 필드는 규칙의 예외는 아닙니다. 따라서 값도 action 속성으로 설정됩니다. 그런 다음

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

를 통해 버튼 이벤트를 식별하고 실행하는 가장 자연스러운 스트럿츠 1 방법을 확인할 수 있습니다 것은 버튼과 함께 메시지 키 값을 파견하는 것입니다. 예를 들어

"button.delete" 메시지 리소스 핵심 조치를 할 실행될 때, 작업이 LookupDispatchAction을 구현하고

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

를 오버라이드 (override) 할 필요가 MessageResource.properties 파일

button.delete = Delete user 

을에 있어야합니다 map에 지정된 메소드로 디스패치합니다. 이 예제에서는 메서드 delete입니다.

+0

하지만 내 모든 버튼의 이름과 동작은 같습니다. 그리고 이들 모두는 목록의 크기에 따라 동적으로 생성됩니다. – rand0m86

+0

이 답변에 설명 된 작업을 보내야합니다. 추가 매개 변수를 추가하려면 url 또는 숨겨진 필드에 매개 변수를 전달해야합니다. –