【问题标题】:Failed to parse the expression [#{privilegeManagedBean.deleteAction(p)}]无法解析表达式 [#{privilegeManagedBean.deleteAction(p)}]
【发布时间】:2014-08-22 07:36:29
【问题描述】:

单击 CommandLink 下的 GraphicImage 时,我想从数据表中删除选定的行。 但这对我不起作用。

它给出错误:-

/privilegepage.xhtml @66,21 action="#{privilegeManagedBean.deleteAction(p)}" 解析表达式失败 [#{privilegeManagedBean.deleteAction(p)}]

Bean:-特权

    public class Privilege {

    private int id;
    private String privilege;

    public Privilege() {
    }

    public Privilege(int id, String privilege) {
        this.id = id;
        this.privilege = privilege;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getPrivilege() {
        return privilege;
    }

    public void setPrivilege(String privilege) {
        this.privilege = privilege;
    }

}

bean:- PrivilegeDao.java

    public int deletePrivilege(int id) {
        PreparedStatement preparedStatement = null;
        String sqlprivilege;
        Connection dbConnection = null;
        int pinsert = 0;
        try {
            sqlprivilege = "delete privilege from privilege where id=?";
            dbConnection = ConnectionDao.getDBConnection();
            preparedStatement = dbConnection.prepareStatement(sqlprivilege);
            preparedStatement.setInt(2, id);
            if(preparedStatement.executeUpdate()==1)
                pinsert=1;
            else
                pinsert=0;
            System.out.println("privilege is delete :- ");
        } catch (SQLException e) {

            System.out.println(e.getMessage());

        } finally {

            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dbConnection != null) {
                try {
                    dbConnection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }
        return pinsert;
    }

bean :-PrivilegeManagedBean

    @ManagedBean(name = "privilegeManagedBean", eager = true)
    @SessionScoped
    /* @ManagedProperty(value="#param.id") */
    public class PrivilegeManagedBean {
    private int id;
    private String privilege;
    private PrivilegeDao pdao;
    @SuppressWarnings("unused")
    private List<Privilege> privilegeData;
    private static int srno;
    private int selectedRowIndex = -1;

    public PrivilegeManagedBean() {
        privilegeData = new ArrayList<Privilege>();
        pdao = new PrivilegeDao();
        srno = 0;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getPrivilege() {
        return privilege;
    }

    public void setPrivilege(String privilege) {
        this.privilege = privilege;
    }

    public void setPrivilegeData(List<Privilege> privilegeData) {
        this.privilegeData = privilegeData;
    }

    public List<Privilege> getPrivilegeData() {
        return this.privilegeData = pdao.getUserList();
    }

    public int getSelectedRowIndex() {
        return selectedRowIndex;
    }

    public void setSelectedRowIndex(int selectedRowIndex) {
        this.selectedRowIndex = selectedRowIndex;
    }
    public void addDataTableRow() {
        pdao.addRow(this.id, this.privilege);

    }

    private static ArrayList<Privilege> privilegeList = new ArrayList<Privilege>();

    public ArrayList<Privilege> getPrivilegeList() {
        return privilegeList;
    }

    public void setPrivilegeList(ArrayList<Privilege> privilege) {
        privilegeList = (ArrayList<Privilege>) pdao.getUserList();
    }

    public int addAction() {
        Privilege privilegeitem = new Privilege(this.id, this.privilege);
        privilegeList.add(privilegeitem);
        return pdao.addPrivilege(this.privilege);
    }

    public int deleteAction() {
        Privilege privilegeitem = new Privilege(this.id, this.privilege);
        privilegeList.remove(privilegeitem);
        System.out.println("delete Action...");
        return pdao.deletePrivilege(this.id);

    }

    public int onEdit(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Privilege Edited",
                ((Privilege) event.getObject()).getPrivilege());
        FacesContext.getCurrentInstance().addMessage(null, msg);
        int pid = pdao.getPrivilegeId(this.privilege);
        System.out.println("Privilege Name For Id :- " + this.privilege);
        System.out.println("Privilege Id :- " + pid);
        return pdao.updatePrivilege(pid, this.privilege);
    }

    public void onCancel(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Privilege Cancelled");
        FacesContext.getCurrentInstance().addMessage(null, msg);
        privilegeList.remove((Privilege) event.getObject());
    }

    public String deletePrivilege(Privilege privilege) {
        privilegeList.remove(privilege);
        return null;
    }

    public int getSrno() {
        return ++srno;
    }
    }

Privilege.xhtml

<p:growl id="messages" showDetail="true" />
        <p:dataTable value="#{privilegeDao.userList}" var="p"
            id="datatbldispprivilege" style="width:500px" editable="true" lazy="true">
            <f:facet name="header">  
                        Privilege List  
                    </f:facet>
            <p:ajax event="rowEdit" listener="#{privilegeManagedBean.onEdit}"
                update=":form1:messages" />
            <p:ajax event="rowEditCancel"
                listener="#{privilegeManagedBean.onCancel}" update=":form1:messages" />
            <p:column headerText="Privileges Name">
                <p:cellEditor>
                    <f:facet name="output">
                        <p:outputLabel value="#{p.privilege}" name="privilegeoutputname" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{privilegeManagedBean.privilege}"
                            name="privilegeinputname" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Options" style="width:100px">
                <p:rowEditor>

                </p:rowEditor>
            </p:column>

            <p:column headerText="Delete" style="width:100px">
                <p:commandLink action="#{privilegeManagedBean.deleteAction(p)}"
                    update="@form">
                    <p:graphicImage value="/images/deleteicon.png" library="images"
                        onclick="if (!confirm('Are you sure you want to delete the current record?')) return false"
                        width="20px" height="20px" />
                    <f:param name="pname" value="#{p.name}" />

                </p:commandLink>

            </p:column>
        </p:dataTable>

【问题讨论】:

    标签: jsf primefaces el


    【解决方案1】:

    您的PrivilegeManagedBean#deleteAction 不接受任何参数,但您的JSF 代码将数据表value 的当前迭代传递给方法。所以要么不向方法传递任何东西:

    <p:commandLink action="#{privilegeManagedBean.deleteAction()}" update="@form">
    

    或者更改PrivilegeManagedBean#deleteAction的方法签名。

    【讨论】:

    • 但是当我使用 deletePrivilege(Privilege privilege) 时会出错。 privilegepage.xhtml @63,91 action="#{privilegeManagedBean.deletePrivilegeData(p)}" 无法解析表达式 [#{privilegeManagedBean.deletePrivilegeData(p)}] deletePrivilege(Privilege privilege) 包含参数所以我在命令链接上设置参数 所以它给出了错误。
    • #{privilegeDao.userList} 是否返回 List&lt;Privilege&gt;
    • yes #{privilegeDao.userList} 返回一个列表
    • @ChauhanRita 你真的应该了解你自己的代码 - 当你甚至没有检查你自己的方法时进行远程调试很尴尬 - 在你的在您的代码中甚至不存在的异常消息中评论并声明deletePrivilegeData
    • 对不起先生,我的输入错误 deletePrivilege() 方法在我的代码中可用......
    【解决方案2】:

    你试图调用错误的方法。动作应该是这样的:

    <p:commandLink action="#{privilegeManagedBean.deletePrivilege(p)}" update="@form">
    

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2016-01-21
      • 2017-03-28
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多