1
모든 격자 패널을 arraylist에 저장하여 필요에 따라 반복 할 수 있도록했습니다. 그러나 얻은 결과는 내 기대와 달랐습니다. Netbeans 디버깅 모드를 사용하면 arraylist에 추가 된 모든 gridpanel이 jsp에서 바인드 된 것과 다른 값을 가짐을 알 수 있습니다. 예를 들어바인딩을 통해 제출 된 값 가져 오기
, (에서 디버깅 모드)
Name Type Value
gridPanel1 HtmlPanelGrid #334
.
.
gridPanels ArrayList_ #323
[0] HtmlPanelGrid #524
문제는 잘못 무엇인가? 올바른 방법은 무엇입니까?
JSP 파일
<h:panelGrid binding="#{CreatePage.gridPanel1}" columns="10" id="gridPanel1" style="height: 100%" width="671">
<webuijsf:label for="column_TF1" id="columnLabel1" text="Column 1: "/>
<webuijsf:textField binding="#{CreatePage.column_TF1}" id="column_TF1" valueChangeListenerExpression="#{CreatePage.column_TF1_processValueChange}"/>
<webuijsf:label for="dataDropDown1" id="dataLabel1" text="Data Type: "/>
<webuijsf:dropDown binding="#{CreatePage.dataDropDown1}" id="dataDropDown1"
items="#{CreatePage.dataDropDown1DefaultOptions.options}"
onChange="webui.suntheme4_2.common.timeoutSubmitForm(this.form, 'mainGridPanel:columnGridPanel:gridPanel1:dataDropDown1');"
selected="#{CreatePage.dataDropDown1DefaultOptions.selectedValue}" valueChangeListenerExpression="#{CreatePage.dataDropDown1_processValueChange}"/>
<webuijsf:textField binding="#{CreatePage.charValueTF1}" columns="5" id="charValueTF1" rendered="false"/>
<webuijsf:label for="pkDropDown1" id="pkLabel1" text="Primary Key: "/>
<webuijsf:dropDown binding="#{CreatePage.pkDropDown1}" id="pkDropDown1"
items="#{CreatePage.pkDropDown1DefaultOptions.options}" onChange="" selected="#{CreatePage.pkDropDown1DefaultOptions.selectedValue}"/>
<webuijsf:label for="nullableDropDown1" id="nullableLabel1" text="Nullable:"/>
<webuijsf:dropDown binding="#{CreatePage.nullableDropDown1}" id="nullableDropDown1"
items="#{CreatePage.pkDropDown1DefaultOptions.options}" onChange=""
selected="#{CreatePage.pkDropDown1DefaultOptions.selectedValue}" valueChangeListenerExpression="#{CreatePage.nullableDropDown1_processValueChange}"/>
</h:panelGrid>
<h:panelGrid binding="#{CreatePage.gridPanel2}" columns="10" id="gridPanel2" style="height: 100%" width="671">
<webuijsf:label for="column_TF2" id="columnLabel2" text="Column 2: "/>
<webuijsf:textField binding="#{CreatePage.column_TF2}" id="column_TF2" valueChangeListenerExpression="#{CreatePage.column_TF2_processValueChange}"/>
<webuijsf:label for="dataDropDown2" id="dataLabel2" text="Data Type: "/>
<webuijsf:dropDown binding="#{CreatePage.dataDropDown2}" id="dataDropDown2"
items="#{CreatePage.dataDropDown1DefaultOptions.options}"
onChange="webui.suntheme4_2.common.timeoutSubmitForm(this.form, 'mainGridPanel:columnGridPanel:gridPanel2:dataDropDown2');" selected="#{CreatePage.dataDropDown1DefaultOptions.selectedValue}"/>
<webuijsf:textField binding="#{CreatePage.charValueTF2}" columns="5" id="charValueTF2" rendered="false"/>
<webuijsf:label for="pkDropDown2" id="pkLabel2" text="Primary Key: "/>
<webuijsf:dropDown binding="#{CreatePage.pkDropDown2}" id="pkDropDown2"
items="#{CreatePage.pkDropDown1DefaultOptions.options}" onChange="" selected="#{CreatePage.pkDropDown1DefaultOptions.selectedValue}"/>
<webuijsf:label for="nullableDropDown2" id="nullableLabel2" text="Nullable:"/>
<webuijsf:dropDown binding="#{CreatePage.nullableDropDown2}" id="nullableDropDown2"
items="#{CreatePage.pkDropDown1DefaultOptions.options}" onChange=""
selected="#{CreatePage.pkDropDown1DefaultOptions.selectedValue}" valueChangeListenerExpression="#{CreatePage.nullableDropDown1_processValueChange}"/>
</h:panelGrid>
자바 파일
List<HtmlPanelGrid> gridPanels = new ArrayList<HtmlPanelGrid>();
public HtmlPanelGrid getGridPanel1() {
return gridPanel1;
}
public void setGridPanel1(HtmlPanelGrid hpg) {
this.gridPanel1 = hpg;
}
private HtmlPanelGrid gridPanel2 = new HtmlPanelGrid();
public HtmlPanelGrid getGridPanel2() {
return gridPanel2;
}
public void setGridPanel2(HtmlPanelGrid hpg) {
this.gridPanel2 = hpg;
}
private HtmlPanelGrid gridPanel3 = new HtmlPanelGrid();
if (gridPanels.isEmpty()) {
gridPanels.add(gridPanel1);
gridPanels.add(gridPanel2);
gridPanels.add(gridPanel3);
gridPanels.add(gridPanel4);
gridPanels.add(gridPanel5);
gridPanels.add(gridPanel6);
}
for (int i = 0; i < gridPanels.size(); i++) {
TextField tempTF = (TextField) gridPanels.get(i).findComponent(("column_TF" + Integer.toString(i)));
// I always get null value
tempStr = (String) tempTF.getValue();
}
형식하시기 바랍니다해야합니다. 질문을 줄이십시오. – Nishant
지저분한 코드. 아무것도 이해할 수 없다. – Masudul
나는 코드를 읽을 수있게 만든다고 생각한다 : –