java - 丰富的面孔和数据表

标签 java jsf datatable richfaces ajax4jsf

我有关于富人脸和 bean 的问题。 我有一个使用 richfaces 的 jsp 页面,其中有: rich:extendedDatatable 组件,它从我的 MainBean 中获取数据作为 ArrayList (该 bean 查询 mySQL 并将结果放入稍后填充 dataTable 的 ArrayList 中)。数据表中有 4 列,前 3 列是 h:outputLabels,最后一列是复选框。现在我有一个问题:如何从选定的行中获取信息?我的意思是,当用户单击复选框时,我想获取 id/name 或与该特定行关联的任何内容,然后当用户单击“应用更改的 a4j:”按钮时,我将更新数据库,当用户再次登录时,他将查看更新的信息:例如复选框现在被选中/未选中,因为用户选中了该复选框。 我相信对于使用它的人来说这是一个简单的查询。对我来说前。 flash开发人员在as3中会很容易,但是我在这里还没有找到解决方案,请帮忙。

更新:

让我解释并发布代码。当用户登录时,我对有 2 个表的数据库进行查询。第一个是“Activity ”(act_id、名称、描述、日期),第二个称为“common”(其中存储 user_id 和 act_id)。我的想法是存储告诉我哪个用户被分配给每个 Activity 的数据。在这种情况下,例如id 为 1 的用户正在使用 Activity 1、2 和 3,id 为 2 的用户正在使用 Activity 2 和 4,然后当数据库查询返回结果时,我只需创建一个包含适当数据的 ArrayList。因此,当用户单击复选框时,会进行插入查询,当用户取消选择复选框时,会进行对数据库的删除查询(基于用户id和act_id),这是查询方法的代码,首先我必须获取user_id:

public String login() {
    Statement stmt2 = null;
    Statement stmt3 = null;
    ResultSet rs = null;
    ResultSet rs2 = null;
    ResultSet rs3 = null;
    String sql = "SELECT * from user";
    String sql2 = "SELECT * from activities";
    try {
      conn = DriverManager.getConnection(jdbcUrl, user, pass);
      stmt = conn.createStatement();
      stmt2 = conn.createStatement();
      boolean selected = true;

      rs = stmt.executeQuery(sql);
      rs2 = stmt2.executeQuery(sql2);
       while(rs.next()) {
        if (username != null && password != null) {
          if (rs.getString("username").equals(username)
              && rs.getString("password").equals(password)) {
            id = rs.getString("user_id");
            stmt3 = conn.createStatement();
            while(rs2.next()){
              selected = false;
              String aid = rs2.getString("act_id");
              String name = rs2.getString("name");
              String desc = rs2.getString("desc");
              String date = rs2.getString("date");
              String sql3 = "SELECT * from common where uid="+id+"";
              rs3 = stmt3.executeQuery(sql3);
              while(rs3.next()) {
                 if(rs3.getString("aid").equals(aid)){
                   activities.add(new Activity(name, desc, date, true));
                   selected = true;
                 }

              }
              if(!selected)
                activities.add(new Activity(name, desc, date, false));
            }
            return "success";
          }
        }
    } 
    }catch (SQLException sqle) {
      sqle.printStackTrace();
    } finally {
      try {
        rs.close();
        stmt.close();
        conn.close();
      } catch (SQLException e) {
      }
    }
    return "failure";
  }

丰富的面孔 View :

<a4j:form>
<rich:extendedDataTable id="activities" value="#{mainBean.activities}" var="acts" sortMode="single">
        <rich:column label="Name" sortable="true" sortBy="#{acts.name}">
        <f:facet name="header"> 
                 <h:outputText value="Name" />
          </f:facet>
        <h:outputLabel value="#{acts.name}" />
        </rich:column>
        <rich:column label="Description" sortable="true" sortBy="#{acts.description}">
        <f:facet name="header"> 
                 <h:outputText value="Description" />
          </f:facet>
        <h:outputLabel value="#{acts.description}" />
        </rich:column>
        <rich:column label="Date" sortable="true" sortBy="#{acts.date}">
        <f:facet name="header"> 
                 <h:outputText value="Date" />
          </f:facet>
        <h:outputLabel value="#{acts.date}" />
        </rich:column>  
        <rich:column label="Selected" sortable="true" sortBy="#{acts.selected}">
        <f:facet name="header"> 
                 <h:outputText value="Selected" />
          </f:facet>
        <h:selectBooleanCheckbox value="#{acts.selected}" />
        </rich:column>
        </rich:extendedDataTable>
        <h:commandButton value="Apply changes" action="#{mainBean.addActivity}" />
        </a4j:form>

最佳答案

JSF 已经更新了数组列表中的 bean。只需在操作方法中以通常的方式保留它即可:

public void save() {
    mainBeanDAO.save(mainBeans);
}

关于java - 丰富的面孔和数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468571/

相关文章:

java - ArtifactTransferException : Failure to transfer org. springframework.data :spring-data-jpa:jar:1. 7.0.RELEASE

java - 如何在Play框架中控制XML元素名称

Java/Android 使用一个 obj 指针来引用 2 个类

java - Primefaces 数据表出现奇怪错误

jsf - 从 web.xml 中删除 FacesServlet 后,扩展名为 .jsf 的 URL 仍重定向到 .xhtml

jsf - 保存 Primefaces 布局状态

css - 数据表 - 边框样式不适用于空的表格单元格

java - Java 取消引用是如何工作的?

javascript - 在 jQuery 中通过 id 获取我的 td 单元格的值

c# - 从具有动态列的数据表中选择不同的行