我确信我在做一些愚蠢的事情,但在过去的几天里,我一直在尝试将我的 checkboxes 填写在
<s:iterator>
标签内,该标签超过 ArrayList
的 Object
。
这是我的
Object
:
public class EmailObject {
int emailId;
String emailAddress;
public int getEmailId() {
return emailId;
}
public void setEmailId(int emailId) {
this.emailId = emailId;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
}
在我的动作类中,我创建了上述
ArrayList
的 EmailObject
。
在我的 JSP 页面上,我可以通过
checkboxlist
获取复选框(但这对我来说不好,因为我希望它是垂直的并且不想与 Struts 样式混淆)
<s:checkboxlist name="selectedEmails" list="userEmails" listValue="emailAddress" listKey="emailId" />
我还可以迭代
ArrayList
的 userEmail
并显示值:
<s:iterator value="userEmails" var="thisEmailData">
<s:property value="emailId"/>
<s:property value="emailAddress"/>
</s:iterator>
但是,当迭代
emailId
的 ArrayList
时,我无法让它显示 userEmail
。 我尝试了所有这些:
<s:iterator value="userEmails" var="thisEmailData">
<tr><td><s:property value="emailId"/></td></tr>
<tr><td>
<s:checkbox fieldValue="%{#emailId}" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="#emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="thisEmailData.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="userEmails.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="#thisEmailData.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="#userEmails.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="%{#thisEmailData.emailId}" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="%{#userEmails.emailId}" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox fieldValue="emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="%{#emailId}" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="#emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="thisEmailData.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="userEmails.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="#thisEmailData.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="#userEmails.emailId" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="%{#thisEmailData.emailId}" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="%{#userEmails.emailId}" name="emailAddressesCB" theme="simple" ></s:checkbox>
<s:checkbox value="emailId" name="emailAddressesCB" theme="simple" >
</s:checkbox>
<s:property value="emailAddress"/>
</td></tr>
</s:iterator>
</td></tr>
</s:iterator>
从上面来看,值字段永远不会填充
emailId
的值。
我知道,我错过了一些基本的东西。 它是什么?
您可以执行以下操作。
<s:iterator value="EmailObjects">
<s:checkbox name="emailAddressess" fieldValue="%{emailAddress}"
label="%{emailId}" >
</s:checkbox>
</s:iterator>
尝试在操作类中使用哈希图。示例
Hashmap<int,String> emailobjMap = new Hashmap<int,String>()
emailobjMap.put(emailId,emailAddress);
request.setAttribute(EMAILIST, emailobjMap);
并在你的jsp文件中使用jstl标签库-
<g:forEach var="list" items="${EMAILIST}">`
<g:out value="${list.key}" />
<g:out value="${list.value}" />
</g>
您忘记了与复选框相对应的简单含义。复选框只有选中或未选中两种状态。如果选中复选框,则
checked="checked"
将添加到 input
标签,未选中时将被删除。您认为哪种数据类型变量适合表示这些状态?我想你明白了,它是一个布尔类型。现在让我们看一下 struts 网站上 checkbox 标签的 example。他们说value="aBoolean"
。不幸的是,这需要更多描述,例如
Boolean aBoolean;
此变量通过 OGNL 进行评估,如果它具有
true
值,则添加 checked="checked"
并且您可以看到复选标记,否则将被删除。