日期:2014-05-20  浏览次数:20862 次

请教一个JSF中在dataTable中<h:commandLink/>失效的问题
我的JSP部分是这样的
<h:form   id= "categoryListForm ">
<h:dataTable   id= "table "   value= "#{categoryListBean.categoryBeans} "  
      var= "category "   rowClasses= "tddata "   headerClass= "tdhead ">
<f:facet   name= "header ">
<h:outputText   value= "#{msgs.category_list} "/>
</f:facet>
<h:column>
                          <f:facet   name= "header ">               <h:outputText     value= "#{msgs.category_name} "/>
        </f:facet> <h:outputText   value= "#{category.name} "/>
      </h:column>
<h:column>       <h:commandLink   action= "#{categoryBean.deleteAction} "   styleClass= "highLightLink ">
<h:outputText   value= "#{msgs.delete} "/> <f:param   name= "categoryId "   value= "#{category.id} "    
                  </h:commandLink>
      </h:column>
        </h:dataTable>
<h:messages   errorClass= "errorMessage "   globalOnly= "true "/>
</h:form>

这是categoryBean中的deleteAction方法:
public   String   deleteAction()
{

try
{
this.getServiceLocator().getCategoryService().deleteCategory(   this.id   );

FacesUtils.resetManagedBean(   BeanNames.CATEGORY_LIST_BEAN   );
                  FacesUtils.addInfoMessageById(   "categoryBean_delete_category_success "   );
}
catch(   LibraryException   ex   )
{
FacesUtils.addErrorMessageById(   ex.getMessage()   );
}

return   NavigationResults.CATEGORY_LIST;
}
为什么点删除链接时候一点反应也没,deleteAction方法也不执行

------解决方案--------------------
今天放假了,帮忙顶
------解决方案--------------------
JSP页面的格式有问题吧,第二列好象没有表头啊。
通常不反应就是因为页面中有一些验证之类的不通过造成的。还没到执行方法。
------解决方案--------------------
将<h:commandLink action="#{categoryBean.deleteAction}" styleClass="highLightLink" > 
<h:outputText value="#{msgs.delete}"/ > <f:param name="categoryId" value="#{category.id}"
</h:commandLink > 
中的action换为actionlistener,否则你所设置的参数无法传递给deleteaction方法。
action所绑定的方法不能传递参数,但actionlistener可以。
------解决方案--------------------
只有listener可以接受参数吧。
普通的backing bean里的方法是不可以的!!!