设置单选按钮组服务器端的选中值

时间:2017-12-11 12:06:30

标签: xpages xpages-ssjs

在重复(var = row,indexVar = rownumber)中,我无法使defaultselected工作。返回值变为正确" true"但是没有用。

根据viewScope选择器中的值,预先选择来自此无线电组的1个无线电("选择")。

<xp:radio id="radio1" value="#{viewScope.test}" groupName="selection">
            <xp:this.text><![CDATA[#{javascript:row[3]}]]>
            </xp:this.text>                                                     
       <xp:this.defaultSelected><![CDATA[#{javascript:var check = "no";
         try{
           for (i=0;i<25;i++){
             if( @IsMember(row[4],viewScope.selectie[0][i])==1){var 
             check="true";break}//only 1 can be checked
           }//end for i
          if (check=="true"){return true}
          else {return false}
        }//end try
        catch (e){
          sessionScope.error = "error radio1 :"+e.toString();}}]]>
    </xp:this.defaultSelected>
    <xp:eventHandler event="onchange" submit="true" refreshMode="partial" 
     refreshId="resultPanel">
         <xp:this.action><![CDATA[#{javascript:var item 
             =viewScope.lijnknr.intValue();
             viewScope.selectie[0].set(item,row[4]);}]]>
         </xp:this.action>
    </xp:eventHandler>
</xp:radio>

修改 我添加了以下行:<xp:this.selectedValue><![CDATA[#{javascript:row[4]}]]></xp:this.selectedValue> 因为我读了以下帖子:Xpages radio btn group checked

但它仍然无法运作.....

第二次编辑 添加了另一个属性:skipContainers =&#34; 1&#34;在&#34;掌握Xpages&#34;,

中找到

但仍然无法工作......

2 个答案:

答案 0 :(得分:1)

如果可能,另一种方法是使用radioGroup组件:

<xp:radioGroup value="#{viewScope.fruit}" defaultValue="orange">
    <xp:selectItems value="#{javascript:['apple', 'orange', 'banana']}" />
    <xp:eventHandler event="onclick" submit="true"
        execMode="partial" refreshMode="partial" refreshId="result" />
</xp:radioGroup>

<xp:div id="result">
    <xp:text value="The selected fruit is: #{empty viewScope.fruit ? 'none' : viewScope.fruit}" />
</xp:div>

答案 1 :(得分:0)

重要编辑!

我在下面写的内容表示无线电是逐个声明的 - 因此在重复组件之外。当放置在重复组件内部时,会出现一个错误,阻止无线电组作为一个组件工作。实际上,输出name参数对于每个循环无线电组件都会有所不同......

我没有在那里看到你的全部代码所以我会举个例子。 考虑以下情况(为了简洁起见,我有时会犯下使用SSJS的罪行):

<xp:repeat value="#{javascript: ['apple', 'orange', 'banana']}"
    var="fruit">
    <xp:radio groupName="fruits" selectedValue="#{fruit}"
        value="#{viewScope.fruit}" defaultSelected="#{fruit eq 'orange'}" text="#{fruit}" />
</xp:repeat>

我将一个动态数组传递给了重复控件,我将每个值引用为fruit

此时我填充了无线电组件:

  1. 我使用相同的groupName对收音机进行分组(你知道)
  2. 我已将selectedValue分配给当前fruit。这是选择收音机时将保存的值
  3. 我将value绑定到实际保存所选值的属性(在这种情况下,就像你一样,我去了viewScope
  4. 我设置了defaultSelected值(根据字面值橙色进行评估,但您可以采用不同的方式进行评估)。如果viewScope.fruit为空橙色将是默认值。
  5. 我已将text - 标签 - 再次分配给当前的fruit变量
  6. 同样,如果变量viewScope.fruit为空,这将为您提供橙色选项作为默认选择。据推测,如果你在页面加载期间为viewScope指定了一个值,比如说:

    <xp:view xmlns:xp="http://www.ibm.com/xsp/core" beforePageLoad="#{javascript: viewScope.fruit = 'banana'}">
    

    然后所选的收音机不会是橙色,而是香蕉

    关于eventHandler,我不清楚你在那里尝试实现的目标。如果你想进一步解释,我也可以帮助那里。