如何根据迭代器值预选 Struts 迭代器内的单选按钮?
How to preselect a radio button inside of a Struts iterator based on the iterator value?
我在 Struts2 <s:iterator>
标签中有以下代码行。
<s:radio name="indicatorFlag" list = "seqNoMap" value="indicatorFlag" /></div>
<div><s:property value = "indicatorFlag"/></div>
seqNoMap
在我的操作页面上定义如下。
seqNoMap = new HashMap<String, String>();
seqNoMap.put("Y", " Yes ");
seqNoMap.put("N", " No ");
单选按钮显示在我的页面上,并将选择信息传回操作页面上的 indicatorFlag
字段,但 <s:radio>
标记中的 value="indicatorFlag"
未预选单选按钮,即使它确实在第二行的 <s:property>
标记中打印出 Y 或 N。 indicatorFlag
在迭代器遍历列表时更改值(它是正在迭代的列表中的对象的一个字段)。我找到了几个可以回答这个问题的地方,我想我正在应用他们给出的答案,但显然我遗漏了一些东西。任何帮助将不胜感激。
这里是RefQuestionAction
动作页面的相关代码。
private HashMap<String, String> seqNoMap;
private List<RefQuestionInfo> questionInfoList;
private String indicatorFlag; // Char (1) flag
public RefQuestionAction(){
seqNoMap = new HashMap<String, String>();
seqNoMap.put("Y", " Yes ");
seqNoMap.put("N", " No ");
}
这里是定义对象的代码RefQuestionInfo
(indicatorFlag
是本题唯一涉及的字段)
public class RefQuestionInfo extends BaseInfo implements Serializable {
private int questionId;
private int seqNo;
private String indicatorFlag;
private Date activeDate;
private Date inactiveDate;
private String question;
这是 <s:iterator>
标签内的 Struts2 代码。我已经删除了大部分页面代码以专注于我的问题所在。
<s:iterator value = "questionInfoList" var = "questionInfo">
<s:radio name="indicatorFlag" list = "seqNoMap" value="indicatorFlag" />
<div><s:property value = "indicatorFlag"/></div>
</s:iterator>
输出如下所示。
我希望根据单选按钮后一行中的 Y 或 N 预选“是”或“否”单选值。
您的所有单选按钮名称相同,这意味着您只能选择其中一个。使用迭代器 status
.
为它们分配不同的名称
<s:iterator value="questionInfoList" var="questionInfo" status="stat">
<s:radio name="indicatorFlag%{#stat.index}" list="seqNoMap" value="indicatorFlag" />
<div><s:property value="indicatorFlag" /></div>
</s:iterator>
请注意,您在上面的代码中的动作和 RefQuestionInfo
中有同名变量 indicatorFlag
,将使用 RefQuestionInfo
中的变量。
我在 Struts2 <s:iterator>
标签中有以下代码行。
<s:radio name="indicatorFlag" list = "seqNoMap" value="indicatorFlag" /></div>
<div><s:property value = "indicatorFlag"/></div>
seqNoMap
在我的操作页面上定义如下。
seqNoMap = new HashMap<String, String>();
seqNoMap.put("Y", " Yes ");
seqNoMap.put("N", " No ");
单选按钮显示在我的页面上,并将选择信息传回操作页面上的 indicatorFlag
字段,但 <s:radio>
标记中的 value="indicatorFlag"
未预选单选按钮,即使它确实在第二行的 <s:property>
标记中打印出 Y 或 N。 indicatorFlag
在迭代器遍历列表时更改值(它是正在迭代的列表中的对象的一个字段)。我找到了几个可以回答这个问题的地方,我想我正在应用他们给出的答案,但显然我遗漏了一些东西。任何帮助将不胜感激。
这里是RefQuestionAction
动作页面的相关代码。
private HashMap<String, String> seqNoMap;
private List<RefQuestionInfo> questionInfoList;
private String indicatorFlag; // Char (1) flag
public RefQuestionAction(){
seqNoMap = new HashMap<String, String>();
seqNoMap.put("Y", " Yes ");
seqNoMap.put("N", " No ");
}
这里是定义对象的代码RefQuestionInfo
(indicatorFlag
是本题唯一涉及的字段)
public class RefQuestionInfo extends BaseInfo implements Serializable {
private int questionId;
private int seqNo;
private String indicatorFlag;
private Date activeDate;
private Date inactiveDate;
private String question;
这是 <s:iterator>
标签内的 Struts2 代码。我已经删除了大部分页面代码以专注于我的问题所在。
<s:iterator value = "questionInfoList" var = "questionInfo">
<s:radio name="indicatorFlag" list = "seqNoMap" value="indicatorFlag" />
<div><s:property value = "indicatorFlag"/></div>
</s:iterator>
输出如下所示。
我希望根据单选按钮后一行中的 Y 或 N 预选“是”或“否”单选值。
您的所有单选按钮名称相同,这意味着您只能选择其中一个。使用迭代器 status
.
<s:iterator value="questionInfoList" var="questionInfo" status="stat">
<s:radio name="indicatorFlag%{#stat.index}" list="seqNoMap" value="indicatorFlag" />
<div><s:property value="indicatorFlag" /></div>
</s:iterator>
请注意,您在上面的代码中的动作和 RefQuestionInfo
中有同名变量 indicatorFlag
,将使用 RefQuestionInfo
中的变量。