我在將數據表中的單個值傳遞給支持bean時遇到了問題。當我嘗試在確認對話框中的方法中打印它時,我總是得到0的值,但是當我嘗試在命令按鈕中的方法中打印它時,它顯示我需要的值。我認爲它重置了價值或任何東西。使用確認對話框將數據表中的值傳遞給bean JSF
<p:dataTable id="labLists" var="lab" value="#{coltsysHome.laboratory}" >
.....
<p:column headerText=" ">
<p:commandButton value="DELETE" onclick="confDlg.show()" icon="ui-icon-closethick" action="#{coltsysHome.action}">
<f:setPropertyActionListener value="#{lab.lab_id}" target="#{coltsysHome.lab_id_del}" />
</p:commandButton>
</p:column>
對於確認對話框:
<p:confirmDialog widgetVar="confDlg" header="DELETE LABORATORY" message="Are you sure you want to delete this lab?">
<h:form id="delDlgForm">
<p:commandButton id="confirm" value="Yes Sure" oncomplete="confDlg.hide()" actionListener="#{coltsysHome.deleteLab(event)}"/>
<p:commandButton id="decline" value="Not Yet" onclick="confDlg.hide()" type="button" />
</h:form>
豆(RequestScoped):
...getter and setter (lab_id_del)
public void deleteLab(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
String cpath = context.getExternalContext().getRequestContextPath();
try (Connection conn = dataSource.getConnection()) {
ColtsysDAO coltsysDAO = new ColtsysDAO(conn);
coltsysDAO.deleteLab(lab_id_del, coltsysDAO.getUserID(getUser_name()));
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
public void action() {
System.out.println("lab_id_del: " + lab_id_del);
}
什麼是您使用的bean範圍? – Andre 2013-03-11 01:28:02
@Andre是在問題中發佈的'@ RequestScoped'。 – 2013-03-11 04:36:24
嘗試將bean更改爲'@ ViewScoped'或更廣的範圍。 – 2013-03-11 04:37:21