2012-11-12 17 views
1

我使用Strust2作爲表示層。我使用下拉的struts形式與java對象(應用程序)列表綁定。 下拉列表顯示應用程序對象列表,用戶可以選擇一個應用程序並提交。當在Action類中檢索用戶輸入值時,接收值類型是「String」,我們不能直接從struts下拉對象中檢索對象,在我的情況下 「應用程序」 對象使用Struts的Java對象下拉

private List<Application> applicaionList = new ArrayList<Application>(); 
    @Autowired 
    private ApplicationService applicationService; 
    private Application application; 

    public void loadTheForm(){ 
     applicationList = applicationService.findAll(); 
    } 

    public void submitForm(){ 
     Document doc = new Document(); 
     doc.setApplication(application); 

    } 
    //Getter Setters... 

}

application.jsp

<s:form action ="submitForm"> 
    <s:select list ="applicationList" headerValue="---Select---" headerKey="-1" name="application"/> 
</s:form> 

struts.xml中

<action name="submitForm" class="com.ActionSupport" method="submitForm"> 
      <result name="success" type="tiles">/newAdminDocumentRequired.tiles</result> 
    </action> 

當用戶從下拉列表中選擇值並提交時,提交的值是字符串, 如果我們不能如何獲取所選值的對象,我們不能直接在Struts中使用該對象嗎?

謝謝 Udeshika

+0

你能改述這個問題嗎?我無法理解你想要什麼。 – Quaternion

+0

我現在改變了它,我想知道我們不能使用struts2獲得直接對象嗎? – ExCode

+0

好的,我已經添加了struts的一部分。xml,我沒有在這裏使用execute()方法 – ExCode

回答

1

我從你的問題得到了什麼是

1. You have to show list of applications as drop-down. 
2. User selects one application and submit the form. 
3. You have to retrieve the selected application and perform some action with it. 

我假設你的應用程序類有一個屬性「身份證」,這是唯一的所有應用程序。還有一個applicationName,你必須向用戶展示。 所以現在,我會如下

<s:form action ="submitForm"> 
     <s:select list ="applicationList" headerValue="---Select---" headerKey="-1" key="application" listKey="id" listValue="applicationName"/> 
    </s:form> 

現在解決了這個問題,這個標籤將創建一個下拉類似如下

<select name="application"> 
    <option value="-1" selected="selected">---Select---</option> 
    <option value="1">Demo 1 App</option> 
    <option value="2">Demo 2 App</option> 
    <option value="3">Demo 3 App</option> 
    <option value="4">Demo 4 App</option> 
    </select> 

注意其值(1,2,3,4)在OPTION元素中,application.id和titles(Demo 1 App,Demo 2 App等)是application.applicationName。

現在,用戶將選擇並提交。所選應用程序的ID將被髮送到參數「應用程序」中的struts動作。 在行動,你可以做到這一點

public MyClass extends ActionSupport{ 

    private List<Application> applicaionList = new ArrayList<Application>(); 
    @Autowired 
    private ApplicationService applicationService; 
    private **String** application; 

    public void loadTheForm(){ 
     applicationList = applicationService.findAll(); 
    } 

    public void submitForm(){ 
     Application varApp = applicationService.findApplicationById(getApplication()); 
     Document doc = new Document(); 
     doc.setApplication(varApp); 

    } 
    //Getter Setters... 

} 

應用請注意,我已經改變類型爲String。是的,我不認爲你可以直接傳遞下拉對象。

希望它有幫助。

+0

非常感謝,我想知道,所以我們不能直接將對象傳遞給下拉菜單,謝謝。 – ExCode

0
Dropdown with object attributes 
Here Example is shown for store object 

//商店Bean類

calss Store{ 
private int storeId; 
private String storeName; 

//getter setter 

} 

// Action類 //設置在Struts2的Action類(模型驅動)

List<Store> storeList=new ArrayList<>(); 

// JSP頁面

列表
<s:select id="store" name="store" headerKey="-1" 
           headerValue="Select Store " list="storeList" 
           listKey="storeId" listValue="storeId" 
           value="%{IteratorList[#status.index].itemBase.{storeId}}" 
          /></td>