我有两个JSON。 第一个是价值。 编辑:
[{
"objectDimStr": ["Laenge in m: 8630",
"Anzahl Fahrstreifen in : 4",
"Anzahl Bruecken in : 5",
"Anzahl Bauwerke in : 5"],
"objectDim": {
"value": "5",
"unit": "",
"dimension": "Anzahl Bauwerke"
},
"objectType": "Strecke Landstrasse",
"objectSpec": ["inkl. Entw\u00E4sserungsanlagen",
"begleitender Geh-\/Radweg"],
"object": "Strassenverkehrswege"
}]
第二个是配置。
[{
"name": "Objekt",
"propertyName": "object"
},
{
"name": "Objekttyp",
"propertyName": "objectType"
},
{
"name": "Kennzahlen(Einheit: Wert)",
"propertyName": "objectDimStr"
},
{
"name": "Objektspezifikation",
"propertyName": "objectSpec"
}]
现在我希望在表格中显示它。
<table
id="tablePager"
class="table table-striped table-condensed mat-table table-response">
<thead>
<tr>
<xp:repeat
id="repTabHeader"
rows="10000"
value="#{javascript:compositeData.TableConfObj.Config;}"
var="confName">
<th class="table-width valign-top">
<xp:text value="#{javascript:confName.name}"></xp:text>
</th>
</xp:repeat>
</tr>
</thead>
<tbody>
<xp:repeat
id="repTabBody"
rows="10000"
value="#{javascript:compositeData.Obj;}"
var="entry">
<tr>
<xp:repeat
id="repTabBodyVal"
rows="10000"
value="#{javascript:compositeData.TableConfObj.Config;}"
var="confProperty">
<td class="table-width valign-top">
<xp:inputTextarea
id="inputTextarea1"
readonly="true">
<xp:this.value>
<![CDATA[#{javascript:
var propName = confProperty.propertyName;
if ((propName == null || propName == "")) {
return "";
} else {
var propValue = entry.get(propName);
if ((propValue == null || propValue == "")) {
return "";
} else {
if (propValue.getClass() == "class java.util.ArrayList"){
return propValue.join(", ");
} else {
return propValue;
}
}
}
}]]>
</xp:this.value>
</xp:inputTextarea>
</td>
</xp:repeat>
</tr>
</xp:repeat>
</tbody>
问题是'entry.get(propName)'。在一个案例中,我从JSON获得了Value。在另一个案例中,我收到了错误。
脚本解释器错误,line = 6,col = 143:[TypeError]调用错误 方法'get(java.lang.String)'对'String类型的对象 [JavaScript对象]'
如何在没有get的情况下从JSON获取值。我不知道JSON-Entries的名称,仅在配置-JSON中。
答案 0 :(得分:0)
我觉得我之前遇到过这种情况,但我不记得这个解决方案。会继续绞尽脑汁想要记住我是如何解决它的。
与此同时,您可以尝试:var propName:java.lang.String = confProperty.propertyName;
编辑:实际上,错误表明entry
变量是一个String而不是JSONObject,因此您无法调用get方法。最初我认为它不喜欢方法调用的参数。不确定您为Obj传递的自定义控件的自定义属性的设置可能是一个问题。如果你添加了这个,它可能会做到这一点:
var jsonEntry = toJson(entry);
var propValue = jsonEntry.get(propName);