【问题标题】:Print data from dynamic table in JSF从 JSF 中的动态表中打印数据
【发布时间】:2015-08-14 14:27:07
【问题描述】:

我有一个带有动态表的屏幕,其中包含 inputtext feild 和 selectneMenu 旁边有一个 (+) 按钮,当用户按下该按钮时,表单应在其下方添加另一行 ,我想在控制台(Eclipse)上打印用户将输入的数据,我想为(+)按钮添加一个验证,用户无法添加新行,直到用户在前一行的所有单元格中输入数据
我是 jsf 编程的新手。谁能告诉我一个基本的例子。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    您可以使用 f:setPropertyActionListener 和 h:commandButton 来获取支持 bean 中当前行的值。在 Backing bean 中,您可以应用验证来检查 inputtext 和 selectOneMenu 的值。如果值不为空,您可以将新对象(行)添加到您的列表中,如下所示:

    JSF 代码:

    <h:datatable id="dt" var="element" value="#{bean.list}">
    <h:column>
    <h:inputText value="#{element.inputVal}" > </h:inputText>
    </h:column>
    <h:column>
    <h:selectOneMenu value="" > </h:selectOneMenu>
    </h:column>
    <h:column>
         <h:commandButton value="Plus Button" action="#{bean.addRow}">
                        <f:setPropertyActionListener value="#{element}" target="#{bean.selectedRow}" />
        </h:commandButton> 
    </h:column>
    </h:datatable>
    

    豆码:

       public void addRow()
            {
               if(validateEmptyRow(selectedRow)
               {
                A a = new A();
                list.add(a);
               }
              else
              {
               //Print Validation Message
              }
            }
    
        public boolean validateEmptyRow(A selectedRow){
    
            boolean flag = true;
            if(null == selectRow.getInputVal()){
              flag = false;
            }
            //similary validate null value for selectOneMenu and return boolean value false if any of the two is having null or empty value
            return flag; 
        }
    
    //define getter setter for selectedRow, list etc
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2012-07-20
      • 2012-01-19
      • 2019-05-31
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2017-03-17
      相关资源
      最近更新 更多