我有2个编辑框,1个是可编辑的,另一个只是打印sessionScope的名称,两个字段都在2个单元格中彼此相邻,请参阅下面的代码,inputText1是一个可编辑的文本字段,inputText2是非可编辑文本,打印#{sessionScope.Tmp1_ABC}
<xp:td>
<xp:inputText id="inputText1"
loaded="true">
<xp:this.value><![CDATA[${javascript:var fieldName = "Tmp_" + @ReplaceSubstring(varcollection," ","");
return '#{sessionScope.' + @ReplaceSubstring(fieldName,@List(" ",")","("),"") + '}';}]]></xp:this.value>
<xp:eventHandler
event="onchange" submit="true" refreshMode="partial"
refreshId="panel_1" />
</xp:inputText>
</xp:td>
<xp:td>
<xp:inputText id="inputText2"
loaded="true">
<xp:this.value><![CDATA[#{javascript:var fieldName = "Tmp1_" + @ReplaceSubstring(varcollection," ","");
return '#{sessionScope.' + @ReplaceSubstring(fieldName,@List(" ",")","("),"") + '}';}]]></xp:this.value>
<xp:eventHandler
event="onchange" submit="true" refreshMode="partial"
refreshId="panel_1" />
</xp:inputText>
</xp:td>
答案 0 :(得分:2)
AFAIK您无法以这种方式组装数据绑定。数据绑定是EL表达式,而不是SSJS。您可以尝试使用$ {}来计算#{}
答案 1 :(得分:1)
根据Stefan,使用SSJS(javascript :)来定义输入控件的值会导致它只是只读的。要使值可编辑,必须使用表达式语言(EL)绑定它们。对于像示例那样复杂的东西(循环遍历字段/变量列表),您很可能必须学习一点Java以允许您通过EL将输入控件连接到bean。如果代码的目的是让一个字段可编辑而另一个字段是只读的(按照建议)将控件从inputText更改为just(计算)文本或标签并删除事件处理程序。有人在阅读代码时很容易混淆,认为你打算编辑它们。