2009-10-29 4 views
0

저는 Struts 2를 처음 사용합니다. 목록 속성으로 Select 태그를 채우는 데 문제가 있습니다. 값은 action 클래스에서 제공됩니다.이 시나리오에서 샘플 코드를 제공하십시오.Struts 2 select 태그 목록 속성으로 채우기

내 액션 클래스

public class TripDetailsAdd extends ActionSupport { 

    @Override 
    public String execute() throws Exception { 
     return SUCCESS; 
    } 

    public String populate() { 
     VehicleDAO vehicleDAO = new VehicleDAO(); 
     this.lstVehicles.addAll(vehicleDAO.getAllVehicles()); 
     return "populate"; 
    } 

    private String vehicleId; 
    private Collection lstVehicles = new ArrayList<VehiclesVO>(); 
} 

JSP 페이지의 내용이에서

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sform" uri="/struts-dojo-tags"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<%@page import="com.vms.business.dao.VehicleDAO"%> 
<%@page import="java.util.Collection"%><html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Trip Details</title> 
</head> 
<body> 
<s:form action="tripDetailsAdd" method="POST" > 
    <s:hidden name="expenseTypeId"></s:hidden> 
    <table width="100%" height="96%" cellpadding="0" cellspacing="0"> 
     <tr> 
      <td valign="top"><!-- Menu Starts --> <jsp:include 
       page="/pages/menu.jsp"></jsp:include> <!-- Menu End --> 
      <table width="95%" align="center"> 
       <tr> 
        <td> 
        <table width="100%" border="0" cellpadding="0" cellspacing="0"> 

         <tr> 
          <td class="highlight">Trip Details Add</td> 
          <td><s:actionerror /><s:actionmessage /></td> 
         </tr> 
         <tr> 
          <td class="header3shadow" colspan="2"><img height="2" 
           border="0" width="100%"></img></td> 
         </tr> 
        </table> 
        <table> 
         <tr> 
          <td>&nbsp;</td> 
         </tr> 
        </table> 
        <div 
         style="overflow: auto; height: expression((document.body.clientHeight -80) +px ');"> 
        <table width="60%" cellspacing="0" cellpadding="0" border='0'> 
         <tr> 
          <td class="FieldTitle" valign="top"> 
          <table width="100%" cellspacing="4" cellpadding="0" border='0'> 
          <s:select headerKey="0" headerValue="Select One" required="*" label="Vehicle No." 
          labelSeparator=":" list="lstVehicles" listKey="vehicleId" listValue="regNo"></s:select> 

          </td> 
         </tr> 
         <tr> 
          <td> 
          <table width="100%" cellspacing="4" cellpadding="0" border='0'> 
           <s:textfield labelposition="left" requiredposition="right" 
            name="totalIncome" label="Total Income" cssStyle="FieldTitle" 
            labelSeparator=":"></s:textfield> 
          </table> 
          </td> 
         </tr> 
        </table> 

        <table cellpadding="0" width="60%" cellspacing="0" border="0"> 
         <tr> 
          <td align="right"><s:submit label="Add" value="Add"></s:submit></td> 
         </tr> 
        </table> 
        </div> 

        <table border="0" cellspacing="0" cellpadding="0"> 
         <tr> 
          <td>&nbsp;</td> 

         </tr> 
        </table> 
        </td> 
       </tr> 
      </table> 
      </td> 
     </tr> 
    </table> 
</s:form> 
</body> 
</html> 

매핑

<action name="*TripDetailsAdd" method="{1}" 
      class="com.vms.trip.presentation.TripDetailsAdd"> 
      <result name="success" type="redirect">showTripDetailsList 
      </result> 
      <result name="populate">/pages/tripdetails/TripDetailsAdd.jsp 
      </result> 
      <result name="error">/pages/tripdetails/TripDetailsAdd.jsp 
      </result> 
      <result name="input">/pages/tripdetails/TripDetailsAdd.jsp 
      </result> 
     </action> 

내가 검증 파일을 추가하거나 오류 페이지에 발생하면되는 드롭 다운 경우 로딩하지 마세요. 제발 ..

+0

이 문제는 처음로드하는 동안 해결되었습니다. 오류가 발생하면 드롭 다운이로드되지 않습니다. – Jothi

+0

당신이하려고하는 코드를 게시 할 수 있습니까? – Omnipresent

답변

8
위에서 Struts2 select tag

<s:select label="Pets" 
     name="petIds" 
     list="petDao.pets" 
     listKey="id" 
     listValue="name" 
     value="%{petDao.pets.{id}}" 
/> 

. value = 기본 선택, list = 액션 클래스에서 오는 콜렉션, listKey = 맵 키, listValue = 맵 값.

편집 (제공된 코드보고 후) :

문제는

(당신의 선택 태그의 목록 속성에서 언급되는) lstVehicles에 해당하는 액션 클래스의 모든 게터를 필요가 없다는 것입니다 액션 클래스에 다음을 추가하십시오.

public List getLstVehicles() 
{ 
    return this.lstVehicles; 
}