【问题标题】:Edit row using Radio button and commandButton使用单选按钮和命令按钮编辑行
【发布时间】:2014-12-16 19:47:52
【问题描述】:

我可以使用单选按钮选择单行,然后编辑该行上的一些数据,然后使用 commandButton 提交我在该行中编辑的内容。我现在正在尝试编辑用户名单元格作为测试。

这是我的代码快照:

Xadmin.xhtml

<h:form id="form" enctype="multipart/form-data">
    <p:growl id="msgs" showDetail="true" />

    <p:dataTable id="DT" value="#{Jadmin.messages}"
                 var="o"
                 selection="#{Jadmin.selectedUser}"
                 rowKey="#{o.id}"
                 style="margin-bottom:20px">

        <f:facet name="header">
            Users List
        </f:facet>

        <p:column selectionMode="single" />

        <p:column>
            <f:facet name="header">
                <h:outputText value="id" />
            </f:facet>
            <h:outputText value="#{o.id}" />
        </p:column>

        <p:column>

            <f:facet name="header">
                <h:outputText value="username" />
            </f:facet>
            <p:inputText value="#{o.username}"  />
        </p:column>


        <f:facet name="footer">
            <h:commandButton  value="Update" action="#{Jadmin.update}" />

            <p:commandButton value="Delete"
                             action="#{Jadmin.delete}"
                             ajax="false"
                             update=":form:msgs"/>
        </f:facet>
    </p:dataTable>

JadminBeans.java

@ManagedBean(name = "Jadmin")
@SessionScoped
public class JadminBeans implements Serializable {

    private static final long serialVersionUID = 1L;
    private JadminController selectedUser;

    List<JadminController> userslist = new ArrayList<JadminController>();

    public List<JadminController> getMessages() {
        System.out.println("List<JadminController> getMessages()");
        userslist = JadminDAO.getAllUsers();
        return userslist;
    }

    public void delete() {
        //System.out.println(usr);
        //System.out.println(itemList.remove(item)+"!!");
        System.out.println("JadminBeans >> delete() ---------- id= ");
        JadminDAO.deleteUser(selectedUser);

    }

    public JadminController getSelectedUser() {
        return selectedUser;
    }

    public void setSelectedUser(JadminController selectedUser) {
        this.selectedUser = selectedUser;
    }

    public void update() {
        //o=(JadminBeans) objct;
        JadminDAO.updateUser(selectedUser);
    }
}

JadminDAO.java

public static void deleteUser(JadminController user) {
    try {
        PreparedStatement preparedStatement = connection.prepareStatement("delete from users where id=?");
        // Parameters start with 1
        preparedStatement.setLong(1, user.getId());
        preparedStatement.executeUpdate();
        System.out.println("JadminDAO >> deleteUser ----------");

    } catch (SQLException e) {
        System.out.println("JadminDAO >> deleteUser----------- SQLException :(");
        e.printStackTrace();
    }
}

public static void updateUser(JadminController user) {
    try {
        PreparedStatement preparedStatement = connection.prepareStatement("update users username=?, password=?, permission=? where username=?");
        // Parameters start with 1
        //System.out.println(new java.sql.Date(user.getRegisteredon().getTime()));
        preparedStatement.setString(1, user.getUsername());
        preparedStatement.setString(2, user.getPassword());
        preparedStatement.setString(3, user.getPermission());
        //preparedStatement.setDate(3, new java.sql.Date(user.getRegisteredon().getTime()));
        preparedStatement.setString(4, user.getUsername());

        preparedStatement.executeUpdate();

    } catch (SQLException e) {
        e.printStackTrace();
    }
}

JadminController.java

public class JadminController implements Serializable {

    private static final long serialVersionUID = 1L;
    private String username, password, permission;
    private long id;

    // Getters and setters.
}

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    如果您使用Editable Datatable,则不需要任何命令按钮来提交您编辑的内容。 如同一链接所示,在datatable内部通常使用selectOneMenu而不是radioButton进行选择。

    要在数据表中使用输入元素,不要忘记输入 &lt;f:facet name="output"&gt;&lt;/f:facet&gt;&lt;f:facet name="input"&gt;&lt;/f:facet&gt;

    希望对你有帮助。

    【讨论】:

    • 我需要命令按钮来删除一行。我的问题是如何使用命令按钮来编辑单行?
    • 你的意思是内联编辑行吗?你想用 commandButton 替换标准的 p:rowEditor 并保持行为吗?
    • 这正是我的意思。如果可能的话?
    • 我想这只能使用 javascript。 This post 可能有用,与您需要的不同,但可能是一个很好的起点。
    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 2013-07-29
    • 2011-03-16
    • 1970-01-01
    • 2013-10-03
    • 2015-05-12
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多