0

我有 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>
4

2 回答 2

2

AFAIK 你不能那样组装你的数据绑定。数据绑定是一个 EL 表达式,而不是 SSJS。您可以尝试使用 ${} 来计算 #{}

于 2013-07-09T05:55:37.667 回答
1

根据 Stefan 的说法,使用 SSJS (javascript:) 为输入控件定义一个值会导致它只是只读的。要使值可编辑,它们必须使用表达式语言 (EL) 绑定。对于像示例这样复杂的事情(循环字段/变量列表),您很可能必须学习一点 Java 才能通过 EL 将输入控件连接到 bean。如果代码的目的是让一个字段可编辑而另一个字段是只读的,您应该(根据建议)将控件从 inputText 更改为仅(计算的)文本或标签并删除事件处理程序。阅读代码的人可能很容易混淆,认为您希望两者都是可编辑的。

于 2013-07-09T12:32:59.280 回答