3
私が見つけた同様のケースではすべての解決策を試しましたが、運がありません。Struts2があらかじめ選択されたチェックボックスリスト
私のjsp。
<s:checkboxlist list = "positionsMap"
listKey = "%{key.toString()}"
listValue = "%{value}"
name = "selectedPositions"
value = "positionName"
label = "Position" />
positionsMap
キーpositionId
値positionName
とハッシュマップです。
selectedPositions
は、事前チェック済みの位置でいっぱいのリストです。デバッガでテストされ、データベースから正しい値が取得されます。 positions
は、IDと名前のリストです。 私の質問は、selectedPositions
に格納されているチェックボックスを事前チェックして表示する方法です。 私が持っている結果はすべて選択されていないチェックボックスです。 何かが明確でない場合は、私に尋ねてください。 ありがとうございます!アクションから
詳細:
private Object1 object= new Object1();
private List<Position> positionList = new ArrayList<>();
private List<Position> selectedPositions = new ArrayList<Position>();
private String positionName = new String();
private Map<Long,String> positionsMap = new HashMap<Long, String>();
//getters, setters
@Inject
transient ObjectDAO objectDAO;
@Inject
transient PositionDAO positionDAO;
public String edit() {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
object= objectDAO.listById(Long.parseLong(request.getParameter("id")));
positionList = positionDAO.listPositions();
selectedPositions = object.getPositions();
for (int i = 0; i < positionList.size(); i++) {
Position row = (Position) positionList.get(i);
Long id = row.getPositionId();
positionName = row.getPositionName();
positionsMap.put(id, positionName);
}
return SUCCESS;
}
これはアンドレアです!ありがとうございました。私は数日間試していましたが、似たようなトピックの他のすべての回答はうまくいきませんでした... – manu
チェックした値をサブミットしてDBに保存したいのですが?私の最初の例では、私は事前チェックされた値を持っていませんでしたが、私は彼らが投稿され、DBに保存された位置を確認していました。あなたの例の後で、私はポジションを事前にチェックしています(これは達成したいものでしたが、Andreaは私の質問に答えましたが、投稿をクリックするとうまくいきません)。アイデアがあれば教えてください。ありがとう! – manu
奇妙なのは、アクションに送り返すときに重要なのは 'name'(宛先リストをターゲットにする)と' listKey'(宛先リストに何を送るべきかを指定する)だけであり、両方とも変更されていないからです。 > –