1

如何获取所选项目是列表、组合框等?

我在这里找到了这段代码:

/*****
 *** getSelectableValues()
 *** prints all selectable values for a given component, f.e. comboboxes, listboxes etc.
 ***
 *** @params id of component
 *****/

function getSelectableValues( id ) {
   var ComboBox = getComponent( id );
   var ChildrenList:java.util.ListIterator;
   ChildrenList = ComboBox.getChildren().listIterator();
   while (ChildrenList.hasNext()) {
      var Child = ChildrenList.next();

      /*** process computed / multiple values ***/
      if( typeof( Child ) == 'com.ibm.xsp.component.UISelectItemsEx' ){
         var hlp = Child.getValue();
         for( var i=0; i< hlp.length; i++ ){

            /*** print to server console ***/
            print( hlp[i].getLabel() + "|" + hlp[i].getValue() );
         }
      }

      /*** process single values ***/
      if( typeof( Child ) == 'com.ibm.xsp.component.UISelectItemEx' ){

      /*** print to server console ***/
      print( Child.getItemLabel() + "|" + Child.getItemValue() );
      }
   }
}

/*** get all selectable values for element 'comboBox1' ***/
getSelectableValues( 'comboBox1' );

但它似乎获得了列表框中的所有项目,而不仅仅是选定的项目。任何想法如何修改它以获取选定的值?

4

2 回答 2

2

与其询问组件,不如询问数据模型。例如,如果列表框绑定到:

#{someDoc.someItemName}

...然后您可以通过询问数据源来检索选定的值:

var selectedValues = someDoc.getValue("someItemName");

如果组件改为绑定到作用域变量:

#{viewScope.selectedValues}

...然后只问那个变量:

var selectedValues = viewScope.get("selectedValues");
于 2013-01-10T14:14:31.547 回答
1

您可以使用 SSJS 访问选定的值:

getComponent('comboBox1').value

如果您正在使用列表框并启用了多项选择,则可以使用 Explode 获取字符串数组:

@Explode(getComponent('listBox1').value)
于 2013-01-10T13:56:23.680 回答