2013-10-23 2 views
2

올바른 값을 표시하는 ViewAction 클래스에서 값을 가져 오는 JSP의 반복 목록 오브젝트.jsp에서 조치 클래스로 List 오브젝트 값 가져 오기

아래는 jps 코드입니다.

<s:iterator value="beanList" status="stat"> 
    <tr> 
     <td>  
      <input type="checkbox" name="subCheckBox" /> 
     </td> 
     <td>     
      <s:textfield name="beanList[%{#stat.index}].rollnumber" 
          value="%{rollnumber}" theme="simple"/> 
     </td> 
     <td> 
      <s:textfield name="beanList[%{#stat.index}].name" 
          value="%{name}" theme="simple"/> 
     </td> 
     <td> 
      <s:textfield name="beanList[%{#stat.index}].location" 
          value="%{location}" theme="simple"/> 
     </td> 
    </tr>  
</s:iterator> 

ViewAction.java와 콩 클래스 코드는 액션 클래스 목록 객체의 이름으로

을 다음과 같이이다 된 beanList

public class ViewCheckboxAction extends ActionSupport { 
    HttpServletRequest request = ServletActionContext.getRequest(); 
    String viewData = "select * from student order by rollno"; 
    List<Bean> beanList; 

    public List<Bean> getBeanList() { 
     return beanList; 
    } 

    public void setBeanList(ArrayList<Bean> beanList) { 
     this.beanList = beanList; 
    } 

    public String execute() { 
     beanList = new ArrayList<Bean>(); 
     DbConnection db = new DbConnection(); 
     int counter = 0; 
     try { 
      Statement st = db.getConnection().createStatement(); 
      ResultSet res = st.executeQuery(viewData); 
      while(res.next()) { 
        counter++; 
        Bean bean = new Bean(res.getInt(1), 
             res.getString(2), 
             res.getString(3)); 
        rollNumber.add(res.getString("rollno")); 
        beanList.add(bean); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       db.removeConnection(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     } 

     if(counter>0) 
      return SUCCESS; 
     else 
      return ERROR; 
    } 
} 

콩 :

public class Bean { 
    int rollnumber; 
    String name; 
    String location; 

    public Bean(int x, String y, String z) { 
     rollnumber = x; 
     name = y; 
     location = z; 
    } 

    getters and setters... 

I 여러/싱글이 필요하다. 업데이트 된 작업을 수행하기 위해 양식 필드 값을 jsp에서 클래스으로 업데이트했습니다. 그러나 목록 (beanList) 값은 조치 클래스에서 무효화됩니다. 그것은 nullified 이후 나는 작업을 업데이트 할 수 없습니다. 1) 새 작업 클래스 (EditAction.java)에서 목록 개체 (beanList)를 초기화하는 방법은 무엇입니까? ViewAction.java에서 선언하는 것과 같은 방법입니다. 2) Jsp sysntax가 적절한가요? 도움을 요청하십시오. 미리 감사드립니다.

KeyProperty_beanList=rollnumber 
Element_beanList=Bean 
CreateIfNull_beanList=true 

형태를 통해이 제출의 rollnumber가 된 beanList의 빈 인스턴스의 KeyProperty로 사용됩니다

답변

3

이 인자없는 생성자 당신의 Bean 클래스에 기본을 추가합니다.

인자없는 생성자는이 기본이기 때문에 그런 식으로 호출되지되는 기본 : 당신이 어떤 생성자를 지정하지 않은 경우, 그것은 자동으로 생성됩니다.

대신 당신이 당신과 같은 매개 변수를 예를 하나의 또 다른 생성자를 지정하면

, 생성자가 자동으로 더 이상 생성되지 않습니다 노 인수, 당신은 는 당신이 그것을 필요로하는 경우에 명시 적으로 선언이 없습니다.

Struts2에는 빈을 생성하는 no-args 생성자가 필요합니다.

예를 들어, 10 개의 매개 변수를 사용하는 생성자가있는 bean을 가질 수 있으며 JSP 페이지에서 하나만 지정하십시오. Struts는 객체를 작성하고 Setter를 통해 단일 필드를 설정할 수 있어야합니다. 누락 된 매개 변수 9 개에 대해

+0

고맙습니다. 제대로 작동합니다 :) Bean 클래스에서 no-args 생성자가 필요한 이유는 무엇입니까? 도와주세요. – Prakash

+1

효과가 있다면 답변을 upvote 받아 받아 들여야합니다. 내가 무슨 일이 있었는지 알기 위해 지금 편집하겠습니다. –

+1

ㅎ, 잘 잡으세요. OP에서 콩 수업을 보지 못했어요. –

1

당신은 ViewCheckboxAction-conversion.properties 파일에 다음과 같은 구성을 제공, 유형 변환을 사용해야합니다. 키 속성 필드에 다른 속성을 사용할 수 있습니다. name의 값은이 특수 ID를 사용하여 MyBean 인스턴스로 설정됩니다. 목록에 사용할 수없는 id 값에 null 값이 추가되지 않았습니다. 이 접근법은 OutOfMemoryErrors의 위험을 피합니다!

<s:iterator value="beanList" id="bean"> 
    <tr> 
     <td>  
      <input type="checkbox" name="subCheckBox" /> 
     </td> 
     <td>     
      <s:textfield name="beanList(%{bean.rollnumber}).rollnumber" value="%{rollnumber}" theme="simple"/> 
     </td> 
     <td> 
      <s:textfield name="beanList(%{bean.rollnumber}).name" value="%{name}" theme="simple"/> 
     </td> 
     <td> 
      <s:textfield name="beanList(%{bean.rollnumber}).location" value="%{location}" theme="simple"/> 
      </td> 
    </tr>  
</s:iterator> 

참조 : http://struts.apache.org/release/2.0.x/docs/type-conversion.html

+0

유형 변환을 사용하는 지점이 표시되지 않습니다. –

관련 문제