풍부한 얼굴과 콩에 관한 질문이 있습니다. richfaces를 사용하는 jsp 페이지가 있는데 그 안에 rich : extendedDatatable 구성 요소가 있습니다. MainBean의 데이터를 ArrayList로 가져옵니다.이 bean은 mySQL을 쿼리하고 나중에 dataTable을 채우는 ArrayList에 결과를 저장합니다. datatable에는 4 개의 열이 있는데, 처음 3 개는 h : outputLabels이고 마지막 것은 checkbox입니다. 이제 질문이 있습니다 : 선택한 행의 정보를 어떻게 얻을 수 있습니까? 나는 사용자가 체크 박스를 클릭 할 때 ID/이름 또는이 특정 행과 관련된 모든 것을 가져오고 사용자가 변경된 a4j 적용 버튼을 클릭하면 데이터베이스를 업데이트 할 것이며 사용자가 다시 로그인하면 업데이트 된 정보보기 : 예 체크 박스는 사용자가 체크했기 때문에 선택되었거나 선택되지 않았습니다. 나는 그것이 그와 함께 일하는 누군가를위한 간단한 쿼리라고 생각한다. 나를 위해 전. 플래시 개발자는 as3에서 쉽게 될 것이지만 여기에서는 아직 해결책을 찾지 못했습니다. 제발 도와주세요.풍부한 얼굴과 데이터 테이블
업데이트는 :
나를 설명하고 코드를 게시 보자. 사용자가 로그인하면 데이터베이스에 2 개의 테이블이있는 쿼리를 만듭니다. 첫 번째는 "activities"(act_id, 이름, 설명, 날짜)이고 두 번째 것은 "common"(user_id 및 act_id를 저장하는)이라고합니다. 내 아이디어는 각 사용자가 각 활동에 할당 된 데이터를 저장하는 것입니다. 이 경우, 예를 들어. 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";
}
그리고 풍부한 얼굴보기 :
<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>
죄송합니다. 업데이트에서 설명하려고 시도한대로 문제를 이해할 수 없습니다. 빈 운동장 프로젝트를 만들고이 기사를 통해 데이터 테이블이 어떻게 작동하고 사용되는지 더 잘 이해할 수 있다고 생각합니다. http://balusc.blogspot.com/2006/06/using-datatables.html – BalusC