Java 如何在struts集合标记中获取随机值
我在应用程序中使用struts2标记。我需要将值从script随机更改为s:set标记,并填充到javascript数组中。如果我动态添加,意味着我得到的输出为2012-diff+1,但我的预期输出为2011。我的代码是Java 如何在struts集合标记中获取随机值,java,javascript,jquery,jsp,struts2,Java,Javascript,Jquery,Jsp,Struts2,我在应用程序中使用struts2标记。我需要将值从script随机更改为s:set标记,并填充到javascript数组中。如果我动态添加,意味着我得到的输出为2012-diff+1,但我的预期输出为2011。我的代码是 var threeDatas = []; var prevyear = []; var diff; var flagthree = false; <% int j = 0;%> <s:iterator value="testlist"> pr
var threeDatas = [];
var prevyear = [];
var diff;
var flagthree = false;
<% int j = 0;%>
<s:iterator value="testlist">
prevyear.push(<s:property value="year"/>);
if (<%= j - 1%> !== -1) {
if (prevyear[<%= j - 1%>] !== prevyear[<%= j%>] - 1) {
diff = prevyear[<%= j%>] - prevyear[<%= j - 1%>];
}
if (diff > 1) {
for (inc = 1; inc < diff; inc++) {
<s:set var="incyear"> <s:property value="year"/> - diff+1</s:set>
threeDatas.push(['<s:property value="#incyear"/>', null, null]);
}
flagthree = true;
diff = 0;
}
<% j++;%>
</s:iterator>
可以在JavaScript中使用eval()方法。所以,如果你能产生类似
var incyear=eval('-diff+1')代码>我找到了另一种方法,使用set
<s:set var="incyear"> <s:property value="year"/> - diff+1</s:set>
threeDatas.push([<s:property value="#incyear"/>+"", null, null]);
不要混淆概念(Javascript在客户机上执行,其余在服务器上执行),不要将业务逻辑放在视图中,不要使用Scriptlet。因为您使用的是Struts2,所以操作正好是放置所有这些内容的地方。但是我在客户端需要这个逻辑,有没有其他方法来实现这一点。不清楚这是什么样的逻辑,但是您是否知道,对于testlist的每个元素,您都会将发布在这里的整个代码(在迭代器之间)复制?如果你有100个元素,如果。。。如果。。。对于()。。。阻碍。我不确定你想要的是什么。试着通过添加用例来编辑你的问题:你拥有什么,你需要做什么。我添加了eval方法,就像你的建议一样,添加了incyear,但我的输出是incyear本身。它没有显示set tagTry this中的值:threeDatas.push([eval('-diff+1')+“”,null,null]);要了解我的意思,您可以尝试以下JavaScript:var a=45;警报(评估('1+a+45'));
<s:set var="incyear"> <s:property value="year"/> - diff+1</s:set>
threeDatas.push([<s:property value="#incyear"/>+"", null, null]);
var threeDatas = [];
var prevyear = [];
var diff;
var flagthree = false;
<% int j = 0;%>
<s:iterator value="testlist">
prevyear.push(<s:property value="year"/>);
if (<%= j - 1%> !== -1) {
if (prevyear[<%= j - 1%>] !== prevyear[<%= j%>] - 1) {
diff = prevyear[<%= j%>] - prevyear[<%= j - 1%>];
}
if (diff > 1) {
for (inc = 1; inc < diff; inc++) {
<s:set var="incyear"> <s:property value="year"/> - diff+1</s:set>
threeDatas.push([<s:property value="#incyear"/>+"", null, null]);
}
flagthree = true;
diff = 0;
}
<% j++;%>
</s:iterator>
['x', 'Cats','Dogs'],
['2008', 10, null],
['2009', 20, null],
['2010', null, null],
['2011', null, 23],
['2012', null, 34]