![](/img/trans.png)
[英]Ajax and jstl, servlet setAttribute and foreach in jsp inside javascript
[英]Create javascript json object on iteration jsp bean using jstl c:forEach
我有兩個java類
public class Abc{
private List<SomeOtherClass> someClass;
private String k;
private String m;
}
public class SomeOtherClass{
private String a;
private String b;
private String c;
}
我有一個jsp頁面,在其中創建Abc類的bean
<jsp:useBean id="someId" class="Abc" scope="request" />
現在在這個jsp中,並在一個腳本標簽中,我試圖創建一個json對象的javascript數組
<script>
var abc = (function(){
module._myFunction = {
"key1" :"<c:out value = '${someId.k}'/>",
"key2" :{
<c:forEach varStatus='status' items='${someId.someClass}' var ="xyz">
"subKey1":"${xyz.a}",
"subKey2":${xyz.b}
</c:forEach>
}
}
}(abc || {}))
</script>
但是由於c:forEach循環中的代碼,此代碼段引發了“意外字符串”錯誤。 但是,如果我省略了subkey1和subKey2,它工作正常。 我也認為這是預期的。 有什么辦法可以創建這個json數組。 當我檢查abc.key1是開發人員工具時,它給出了正確的價值。 有什么辦法可以創建這個json數組並檢查
abc.key2.subkey1 or abc.key2.subKey2 in developer console
如果列表中有3個項目,並且您要擴展代碼的這一部分:
"key2" :{
<c:forEach varStatus='status' items='${someId.someClass}' var ="xyz">
"subKey1":"${xyz.a}",
"subKey2":${xyz.b}
</c:forEach>
}
它看起來像:
"key2" :{
"subKey1":"a",
"subKey2":b
"subKey1":"1",
"subKey2":2
"subKey1":"y",
"subKey2":z
}
這不是有效格式化的json數組。 (有關有效JSON數組的快速示例,請參見此處: http : //www.w3schools.com/json/json_syntax.asp-向下滾動到“ JSON Arrays”)
您希望它看起來像是:
"key2" :[
{
"subKey1":"a",
"subKey2":"b"
},
{
"subKey1":"1",
"subKey2":"2"
},
{
"subKey1":"y",
"subKey2":"z"
}
]
因此,您需要在每個元素周圍加上大括號,如果不是最后一個元素,則需要在大括號后面加上一個逗號,並用括號將整個內容括起來。 這是您要執行的操作:
"key2" : [
<c:forEach varStatus='status' items='${someId.someClass}' var ="xyz">
{
"subKey1":"${xyz.a}",
"subKey2":"${xyz.b}"
}<c:if test="${!status.last}">,</c:if>
</c:forEach>
]
注意:我沒有對此進行測試,以確保我的示例沒有錯別字,因此,如果您遇到任何錯誤,請告訴我,我將告訴您如何解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.