当前位置: 首页 > 知识库问答 >
问题:

在p:DataTable中完善行编辑时出错

郑俊弼
2023-03-14

我试图在primefaces Datable中执行行编辑。我的问题是,当我在CellEditor的inputText中键入新值并单击edit(primefaces图标)时,onCellEdit方法被成功地调用,但没有在inputText中选取新值,它选取了最初在DataTable中的值。我做错了什么?我在jsf代码中使用的是PrimeFaces3.5

<h:form id="form1">
        <p:growl id="messages" showDetail="true"/>
        <p:panel header="Registered Devices" style="min-height: 400px;" id="paneldevices">
        <p:dataTable  emptyMessage="No Device Registered"  editable="true"  widgetVar="deviceTable" id="idGrid" value="#{deviceMgdBean.devices}" var="item" >
        <p:ajax  event="rowEdit" listener="#{deviceMgdBean.onCellEdit()}" update=":form1:messages"/>
        <p:ajax event="rowEditCancel" listener="#{deviceMgdBean.onCancel}" update=":form1:messages" />
        <p:column headerText="Options" style="width:50px">  
         <p:rowEditor  />  
        </p:column> 
        <p:column>
        <f:facet name="header">
        <h:outputText value="Device_name"/>
        </f:facet>
        <p:cellEditor>  
        <f:facet name="output">  
       <h:outputText value="#{item.device_name}"/>
       </f:facet>  
       <f:facet name="input">  
      <p:inputText value="#{item.device_name}"  style="width:80%"  />
      </f:facet>  
       </p:cellEditor>                                    
       </p:column>
       </h:form>

这是我的托管Bean

 @ManagedBean
    @ViewScoped
    public class DeviceMgdBean implements Serializable {
        public List<Devices> getDevices()
        {
            List<Devices> l=getDevdao().getDevices();//devices fetched from database

            return l;
        }
             public void onCellEdit(RowEditEvent event)
             {  
               Devices devo=(Devices) event.getObject();
               FacesMessage msg = new FacesMessage("Device Edit","Test:"+devo.getDeviceName());  
               FacesContext.getCurrentInstance().addMessage(null, msg);  
             }  

        public void onCancel(RowEditEvent event)
        {  
            FacesMessage msg = new FacesMessage("Item Cancelled");   
            FacesContext.getCurrentInstance().addMessage(null, msg); 
            Devices devo=(Devices) event.getObject();
        }



    }
    class Devices {
    private int device_id;
    private String device_name;
    //getter and setters

    }

共有1个答案

谢宸
2023-03-14
private List<Devices> l;
public List<Devices> getDevices() {
   if(l==null) l=getDevdao().getDevices();//devices fetched from database
   return l;
}
 类似资料:
  • 问题内容: 我的代码出现了一些问题。 这是我数据库类中的方法 我尝试用我的按钮在这里执行它。 但是我得到这个错误:: 因此,基本上我只需要编写一些快速代码来测试它是否可以这种方式工作,所以不要介意命名。但是由于某种原因它无法正常工作,我尝试不这样做而只执行我在MSSQL中测试过的语句,就可以正常工作。 问题答案: 您的更新声明后有一个迷路者。去掉它。另外,您应始终使用 参数化查询来避免SQL注入。

  • 问题内容: 您可以在外壳程序脚本运行时对其进行编辑,并使更改影响正在运行的脚本吗? 我对csh脚本的具体情况感到好奇,因为我有该批处理运行一系列不同的构建风格并整夜运行。如果在操作过程中发生什么事情,我想加入并添加其他命令,或注释掉未执行的命令。 如果不可能,是否有任何外壳或批处理机制可以使我做到这一点? 当然,我已经尝试过了,但是要知道它是否有效还需要几个小时,而且我对幕后正在发生或未发生的事情

  • 修改f(selector) 里的判断,新增domReady 我们知道在jQuery中还有一种选择器写法 $(function() { }); 在dom加载完毕后马上就执行,这样的方法会比onload更快,所以domReady对于我们来说一定是必不可少的 我们在init方法中要新增以下判断 if(!selector) { return this; } if (typeof selector =

  • 我在JSF项目的中放置了。 选中单元格时,复选框将向右浮动。我知道这是一个css的事情,但我不确定如何修复它。

  • 我在stackoverflow上看到过类似的问题,但无论如何,我无法用这些答案解决我的问题。 我想做的是: 单击JTable中的double on单元格(由于IsCelledTable方法,该单元格可以编辑) 在自定义表中保存单元格的新值以打印此新值 更新我的数据库(SQlite)中的数据 这是我的自定义表模型 . 这是我打印JTable的JPanel:

  • @html.labelfor(模型=>model.cityid,htmlAttributes:new{@class=“control-label col-MD-2”})@html.editorfor(模型=>model.cityid,new{htmlAttributes=new{@class=“form-control”}})@html.validationmessagefor(模型=>model