首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

JSF异常java.lang.IllegalArgumentException

2014-01-26 
JSF异常java.lang.IllegalArgumentException:public String updateProduct() { FacesContext facesContext

JSF异常java.lang.IllegalArgumentException:

public String updateProduct() {

FacesContext facesContext = FacesContext.getCurrentInstance();

UIViewRoot root = facesContext.getViewRoot();
UIData table = (UIData) root.findComponent("editForm").findComponent(
"editTable");
Product product = (Product) table.getRowData();

ProductUtil.updateProduct(product.getId(), product.getName(), product
.getAddress());

ProductUtil.selectAll();// 重载datatable

return "updataKO";

}

当执行到Product product = (Product) table.getRowData();这段代码的时候就报这个异常,请大家帮帮忙

------解决方法--------------------------------------------------------
参数不对的错误, table.getRowData(); 这个函数是你自己写的吗?还是??跳进去看看吧...
------解决方法--------------------------------------------------------
看看那个地方参数不对
------解决方法--------------------------------------------------------
UIData table = (UIData) root.findComponent("editForm").findComponent("editTable");
改成UIData table = (UIData) root.findComponent("editForm:editTable")试试,但我估计这样写也是不成的,
你可以按照下面的方法解决:
<t:commandLink actionListener="#{yourBean.actinlisterer}" immediate="true" action="yourBean.updateProduct">

Java code
public String updateProduct() {return "updataKO";} public void actinlisterer(ActionEvent ev){ UIData table = findParentHtmlDataTable(ev.getComponent());Product product = (Product) table.getRowData();ProductUtil.updateProduct(product.getId(), product.getName(), product.getAddress());ProductUtil.selectAll();// 重载datatable}private HtmlDataTable findParentHtmlDataTable(UIComponent component) {  if (component == null)  {  return null;  }  if (component instanceof HtmlDataTable)  {  return (HtmlDataTable) component;  }  return findParentHtmlDataTable(component.getParent()); }
------解决方法--------------------------------------------------------
学习~~~~~~~~~~~
------解决方法--------------------------------------------------------

------解决方法--------------------------------------------------------
你在错的那句之前调用一下isRowAvailable(),我想你的返回应该是false,也就是没数据可用
------解决方法--------------------------------------------------------
public String updateProduct() {
return "updataKO";
}
public void actinlisterer(ActionEvent ev){
UIData table = findParentHtmlDataTable(ev.getComponent());
Product product = (Product) table.getRowData();

ProductUtil.updateProduct(product.getId(), product.getName(), product
.getAddress());

ProductUtil.selectAll();// 重载datatable
}
private HtmlDataTable findParentHtmlDataTable(UIComponent component)
{
if (component == null)
{
return null;
}
if (component instanceof HtmlDataTable)
{
return (HtmlDataTable) component;
}
return findParentHtmlDataTable(component.getParent());
}
------解决方法--------------------------------------------------------
应该是参数的异常吧,学习了,up
------解决方法--------------------------------------------------------
有时间把你的相关代码都贴出来,包括整个bean及jsf页面

        

热点排行