2010-03-18 1 views
0

У меня вопрос о богатых лицах и бобах. У меня есть страница jsp, которая использует богатые интерфейсы и внутри нее. У меня есть компонент: rich: extendedDatatable, который принимает данные из моего MainBean как ArrayList (этот компонент запрашивает mySQL и помещает результаты в ArrayList, который позже заполняет DataTable). В datatable есть 4 столбца, первые 3 - h: outputLabels, а последний - флажок. Теперь у меня есть вопрос: как я могу получить информацию из выбранной строки? Я имею в виду, что когда пользователь щелкает флажок, я хочу взять id/имя или все, что связано с этой конкретной строкой, а затем, когда пользователь нажимает кнопку Apply changed a4j: я обновляю базу данных, и когда пользователь снова войдет в систему, он будет см. обновленную информацию: например теперь флажок установлен/не выбран, потому что пользователь проверил это. Я считаю, что это простой запрос для тех, кто работал с ним. Для меня, например. Flash разработчик будет легко в as3, но здесь я еще не нашел решение, пожалуйста, помогите.Богатые лица и данныеТаблица

Update:

Позвольте мне объяснить и опубликовать код. Когда пользователь входит в систему, я делаю запрос в базу данных, где у меня есть 2 таблицы. Первый - это «действия» (act_id, имя, описание, дата), а второй - «общий» (который хранит в нем user_id и act_id). Моя идея состоит в том, чтобы хранить данные, которые сообщают мне, какой пользователь назначен для каждого вида деятельности. В этом случае, например, пользователь с идентификатором 1, использует действия 1 2 и 3, а пользователь с id 2 использует действия 2 и 4, а затем, когда запрос из базы данных возвращает результат, я просто создаю ArrayList с соответствующими данными. Поэтому, когда пользователь нажимает на флажок, тогда вставляют запрос, когда пользователь отменяет выбор флажка, а затем удаляется запрос к базе данных (на основе идентификатора пользователя и 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"; 
    } 

И богатые лица смотреть:

<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> 
+0

Извините, я не понимаю проблему, как вы пытались объяснить в обновлении. Я думаю, что может быть полезно создать пустой проект игровой площадки и перейти к этой статье, чтобы лучше понять, как работают данные и могут использоваться: http://balusc.blogspot.com/2006/06/using-datatables.html – BalusC

ответ

1

JSF уже обновил бобы в ArrayList. Просто продолжайте это обычным способом в методе действия:

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

и не забудьте установить 'selectionMode =" none "', чтобы встроенный выбор в extendedDataTable не возился. – Bozho

+0

Не могли бы вы найти пример ниже, пожалуйста? – ortho

 Смежные вопросы

  • Нет связанных вопросов^_^