簡體   English   中英

Struts Action 中對象內地圖屬性的正確請求參數是什么?

[英]What is the correct request parameter for map proprerty inside an object in Struts Action?

考慮以下AnswerAction

public class AnswerAction extends CommonAction implements SessionAware {

    private CaseNumbering caseNumbering;
    (...)
}

FormCaseNumbering

public class FormCaseNumbering implements CaseNumbering {

private Duplicable innermostElement;
Map<Duplicable, Integer> caseNumbersOfDuplicableFormElements = new HashMap<>();
(...)
}

DuplicableFormElement

public class DuplicableFormElement implements Duplicable {

protected int id;
protected boolean duplicable;
}

在通過 spring 注入 bean 的 Struts2 應用程序中:

<bean id="caseNumbering" scope="prototype"
    class="model.FormCaseNumbering">
    <property name="innermostElement" ref="duplicableFormElement"></property>
</bean>


<bean id="answerAction" class="actions.AnswerAction" scope="prototype" autowire="byName">
    <property name="caseNumbering" ref="caseNumbering"/>
</bean>

題:

您如何發送請求參數,該參數使用 caseNumbering 填充操作,該 caseNumbering 包含鍵為 duplicableElement.id duplicableElement.id=6且值為Integer=1的 Map 元素?

我的嘗試:

由於caseNumbering元素是通過 spring 注入的,我沒有問題填充innermostElement ,例如這有效:

(MockHttpServletRequest)request.setParameter("caseNumbering.innermostElement.id","9");

但是以下內容:

(MockHttpServletRequest)request.setParameter("caseNumbering.caseNumbersOfDuplicableFormElements[6]","1");

將失敗:

字段“caseNumbering.caseNumbersOfDuplicableFormElements[6]”的字段值無效。

我還嘗試使用以下內容添加 AnswerAction-conversion.properties ,但沒有運氣:

Key_caseNumbering.caseNumbersOfDuplicableFormElements=model.DuplicableFormElement
KeyProperty_caseNumbering.caseNumbersOfDuplicableFormElements=id
Element_caseNumbering.caseNumbersOfDuplicableFormElements=java.lang.Integer
CreateIfNull_caseNumbering.caseNumbersOfDuplicableFormElements=true

這在 Struts2 中是否可行(無需創建自定義轉換器)?

這是一個類似的問題: Struts Action 中對象內的映射屬性的正確請求參數是什么?

並且可以在 struts2 的郵件列表中找到的答案仍然有效。

簡而言之 - 在 struts2 中處理這種類型的地圖有一個限制,並且需要一個自定義轉換器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM