我遇到了一個問題:當我向具有別名字段名稱的數據庫發出SQL請求時,我無法使用h:dataTable(我使用JSF)顯示它們。如何通過別名獲取字段值,而不是通過JSF中的名稱獲取?
這裏的例子。請求:
SELECT
computers.name AS computers_name,
FROM
computers
WHERE
computers.id IS NOT NULL AND (computers.group_id=1);
而XHTML代碼:
<h:dataTable value="#{advancedSearchComp.computers}"
var="computer" rowClasses="oddTableRow, evenTableRow"
headerClass="tableHeader" styleClass="table">
<h:column>
<f:facet name="header">name</f:facet>
#{computer.computers_name}
</h:column>
</h:dataTable>
而且存在這樣一個問題,因爲H:列不能用別名得到字段的值,只有真實姓名,並返回null。
什麼是最好的解決方案呢?
我會很感激任何提示。
UPDATE。所有我所知道的手冊只考慮微不足道的情況「SELECT * FROM table」。
有沒有一種常見的方式來顯示JSF中的ResultSet,而沒有棘手的方法?
UPDATE。我做到了:
<h:dataTable value="#{advancedSearchComp.selectedComputers}" var="computer" rowClasses="oddTableRow, evenTableRow"
headerClass="tableHeader" styleClass="table">
<h:column>
<f:facet name="header">id</f:facet>
#{computer.computers_id}
</h:column>
<h:column>
<f:facet name="name">Name</f:facet>
#{computer.computers_name}
</h:column>
<h:column>
<f:facet name="header">Location</f:facet>
#{computer.locations_name}
</h:column>
<h:column>
<f:facet name="header">Rack</f:facet>
#{computer.racks_name}
</h:column>
<h:column>
<f:facet name="header">Rack unit</f:facet>
#{computer.computers_rack_unit}
</h:column>
<h:column>
<f:facet name="header">Serial</f:facet>
#{computer.computers_serial}
</h:column>
<h:column>
<f:facet name="header">Inv number</f:facet>
#{computer.computers_inv_number}
</h:column>
<h:column>
<f:facet name="header">Status</f:facet>
#{computer.computers_status_name}
</h:column>
</h:dataTable>
public List<ComputerWrapper> getSelectedComputers() throws SQLException{
ComputerWrapper computer;
selectedComputers.clear();
if (query==null) {
return null;
}
else {
Statement sth=dbhIrmdb.createStatement();
ResultSet rowSet=sth.executeQuery(query);
while (rowSet.next()) {
computer=new ComputerWrapper();
computer.setComputers_id(rowSet.getString("computers_id"));
computer.setComputers_name(rowSet.getString("computers_name"));
computer.setLocations_name(rowSet.getString("locations_name"));
computer.setRacks_name(rowSet.getString("racks_name"));
computer.setComputers_rack_unit(rowSet.getString("computers_rack_unit"));
computer.setComputers_serial(rowSet.getString("computers_serial"));
computer.setComputers_inv_number(rowSet.getString("computers_inv_number"));
computer.setComputers_status_name(rowSet.getString("computers_status_name"));
selectedComputers.add(computer);
}
sth.close();
return selectedComputers;
}
// return null; }
公共類ComputerWrapper { 私人字符串computers_id,computers_name,locations_name,racks_name,computers_rack_unit, computers_serial,computers_inv_number,computers_status_name;
public String getComputers_id() {
return computers_id;
}
public void setComputers_id(String computers_id) {
this.computers_id=computers_id;
}
public String getComputers_name() {
return computers_name;
}
public void setComputers_name(String computers_name) {
this.computers_name=computers_name;
}
public String getLocations_name() {
return locations_name;
}
public void setLocations_name(String locations_name) {
this.locations_name=locations_name;
}
public String getRacks_name() {
return racks_name;
}
public void setRacks_name(String racks_name) {
this.racks_name=racks_name;
}
public String getComputers_rack_unit() {
return computers_rack_unit;
}
public void setComputers_rack_unit(String computers_rack_unit) {
this.computers_rack_unit=computers_rack_unit;
}
public String getComputers_serial() {
return computers_serial;
}
public void setComputers_serial(String computers_serial) {
this.computers_serial=computers_serial;
}
public String getComputers_inv_number() {
return computers_inv_number;
}
public void setComputers_inv_number(String computers_inv_number) {
this.computers_inv_number=computers_inv_number;
}
public String getComputers_status_name() {
return computers_status_name;
}
public void setComputers_status_name(String computers_status_name) {
this.computers_status_name=computers_status_name;
}
public ComputerWrapper() {
computers_id=""; computers_name=""; locations_name=""; racks_name=""; computers_rack_unit="";
computers_serial=""; computers_inv_number=""; computers_status_name="";
}
'advancedSearchComp'託管bean中的'computers'屬性是什麼? – Apurv
是的,它是返回ResultSet的JavaBean訪問器。 –
如何將查詢結果綁定到視圖,即如何執行查詢,從@ @ ManagedBean或使用JSTL''?這看起來很奇怪。另外,您使用的是哪個版本的JSF? –