<h:commandButton>无法开始操作-没有想法吗?

问题描述

| 我正在尝试使用dataModel而不是绑定dataTable并出现此问题。在最后一列,有一个commandButton应该用于从数据库中删除项目。但是当我按下它时,java方法没有启动。 xhtml的一部分(简化的代码):
<h:form>
<rich:extendedDataTable 
  id=\"table\"
  var=\"fItem\"  
  value=\"#{myFood.model}\" 
  selectionMode=\"none\">

 <rich:column width=\"150px\">
  <f:facet name=\"header\">Datum:</f:facet>
  <h:outputText value=\"#{fItem.date}\"/>
 </rich:column>

 <rich:column>
    <h:commandButton id=\"save\" action=\"#{myFood.delete}\" value=\"delete\"/>
 </rich:column>

 <f:facet name=\"footer\">  
   <h:commandButton id=\"btnTest\" action=\"#{myFood.test}\" value=\"test\"/>
 </f:facet>
</rich:extendedDataTable>
</h:form>
MyFood.java的一部分:
public void delete()
{
  System.out.println(\"TEST\");
  try 
  {
    DaoCrud.delete(model.getRowData(),\'P\');
  } 
  catch (Exception e) {.....}
}

public void test()
{
  System.out.println(\"TEST\");
}
但是即使\“ TEST \\”也不会写入控制台! 问题可能出在哪里? 更新:我已经更新了代码示例(facet和test()),它可以工作。一切正常,直到我尝试使用dataModel
private DataModel<Item> model;
... 当我简单地将相同的commandButton移动到构面时,它就可以工作。     

解决方法

如果bean是请求范围的,那么您需要确保在bean的表单提交请求的(后)构造过程中创建的模型与显示初始表单时创建的模型完全相同。
private List<Item> list;
private DataModel<Item> model;

@PostConstruct
public void init() {
    list = itemService.list();
    model = new ListDataModel<Item>(list);
}
JSF将在应用请求值阶段期间迭代模型,以确定按下的按钮,以便可以在调用应用程序阶段将其调用。 如果由于某些业务限制(例如,缺少参数等)而在后续请求中保留模型并不简单,那么您需要通过将Bean标记为“ 4”而不是“ 5”来将其放入视图范围。仅当您使用JSF 2.0时,此方法才有效。
@ManagedBean
@ViewScoped
public class MyBean {}
另外,由于您使用的是RichFaces,因此也可以使用
<a4j:keepAlive>
。将其放在与表单相同的页面中的某个位置:
<a4j:keepAlive beanName=\"#{myBean}\" />
这实际上与JSF 2.0中的“ 4”相同。     ,应该在ѭ10以下     ,您的
delete()
方法应返回一个对象。如果签名不正确,将不会调用它。 \“签名必须匹配java.lang.Object action()\”。看这里。 据我记得,如果您想停留在页面上,可以只返回
null
public String delete()
{
    System.out.println(\"TEST\");
    try 
    {
       DaoCrud.delete(model.getRowData(),\'P\');
    } 
    catch (Exception e) {.....}
    return null;
}
如果不想使用方法结果进行导航,则可能要使用
actionListener
属性及其对应的方法。如果要在执行
actionListener
之后重新渲染某些内容,也可以考虑使用
<a4j:commandButton>
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...