短篇小说:
我有一个字段如下<整数> engine = new ArrayList();当我在jsp中使用$ {engine}时,它以[x1,x2]格式显示其值,但我需要它为engine = x1,engine = x2才能建立链接。怎么做?另一种选择是让后端接受[x1,x2]格式的值。
长篇故事:
我有一个有两个复选框列表的表格,用户根据门的数量和发动机功率等少数项目寻找汽车。一旦提交表格,将显示所有汽车品牌,其中任何数量的汽车与搜索标准匹配。一旦用户点击其中任何一个品牌,就会显示所有匹配的汽车。
...
<s:checkboxlist name="engine" label="Engine" list="@com.car.interfaces.Lists@Engine"/>
<s:checkboxlist name="door" label="door" list="@com.car.interfaces.Lists@Door"/>
....
我使用以下两个代码来显示结果,但两者的输出都采用这种格式[1000,2000]
<s:property value="%{engine}"/>
${engine}
显示结果时,将创建如下链接
<a href ="....?${engine}&${door}&....">View Cars</a>
which would change to following
<a href="....?engine=[1000,2000]
&door=[2,4,5]&.....">View Cars</a>
当我点击链接时,它无法找到项目;但是,如果我将值的格式更改为1000,2000就可以了。
我知道,一种方法是使用for look来浏览所有项目并以所需格式创建项目字符串,但还有其他方法吗?
public static final Map Engine = new TreeMap() {
{
put(1000, "Small");
put(2000, "Good");
put(3000, "Standard");
put(4000, "Powerful");
put(5000, "Excellent");
}
;
};
答案 0 :(得分:1)
使用Struts2标记从列表中创建url参数。 <s:param>
代码会将value
属性中传递的列表展开为param_name=val1¶m_name=val2
格式。
<s:url>
<s:param name="engine" value="engine" />
<s:param name="door" value="door" />
</s:url>
答案 1 :(得分:0)
只需将您的代码行更改为
即可<s:checkboxlist name="engine" label="Engine" list="engine"/>
属性list
的值应该是列表的名称List < Integer > engine = new ArrayList();
,无需提供$ {engine}
我的建议:
创建bean对象列表:
Class Engine{
int enginePower;
String description;
}
现在List <Engine> engineList = new ArrayList();
最后你的checBoxList
<s:checkboxlist name="engineArray" label="Engine" list="engineList" listValue="description" listKey="enginePower"/>
您可以访问以下值:
public class Handler extends ActionSupport{
private String[] engineArray;
public void setEngineArray(String[] engineArray){
this.engineArray= engineArray;
}
@Override
public String execute() throws Exception {
// use the checkbox values here
return Action.SUCCESS;
}
}
我想这就是你要找的东西
答案 2 :(得分:0)
您可以在JSP中格式化结果,如下所示:您可以在循环中添加逗号或使用提供的函数。
<c:forEach items="${engine}" var="currentItem" varStatus="status">
<c:set var="myVar" value="${status.first ? ' ' : myVar} ${currentItem}" />
</c:forEach>
<c:set var="string1" value="${myVar}"/>
<c:set var="string2" value="${fn:split(string1, ' ')}" />
<c:set var="string3" value="${fn:join(string2, ',')}" />
<p>String (3) : ${string3}</p>