我有一个动态表格的屏幕,其中包含inputtext feild和selectneMenu,旁边有一个(+)按钮,当用户按下该按钮时,表单应在其下方添加另一行 ,我想在控制台(Eclipse)上打印用户将要输入的数据,我想为(+)按钮添加验证,用户无法添加新行,直到用户在上一行的所有单元格中输入数据为止 我是jsf编程的新手。有人告诉我一个基本的例子。
答案 0 :(得分:0)
您可以使用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>
Bean代码:
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