0

I'm using datatable row expansion in my project. I have one main panelgrid in <p:rowExpansion> and I have a few panelgrid in main panelgrid. I'm getting input texts -which are in main panelgrid- values correctly to the bean. But I couldn't get other input text values -which is in other panel grids- to bean. I'm getting null result when I save the value to my oracle database.

evmSaveRecord.xhtml

<h:form id="form_2" enctype="multipart/form-data">
<p:dataTable var="questions" value="#{EVMView.loadQuestions(EVMView.strSO,allHeaders)}" id="mydatatable2" rowExpandMode="single"> 
                             <p:ajax event="rowToggle" rendered="answerText" update="answertype_menu" listener="#{EVMView.onRowToggle}"/>
                                <p:column style="width:2rem">
                                    <p:rowToggler/>
                                </p:column>
                                <p:column headerText="Question">
                                    <h:outputText value="#{questions.questions}"/>
                                </p:column>
                                <p:rowExpansion>
                                    <p:panelGrid columns="2" id="panelmain">
                                    <p:outputLabel for="answertype_menu" value="Answer Type : "/>
                                    <p:selectOneMenu id="answertype_menu" filter="true" filterMatchMode="contains" value="#{EVMView.selectedOption}" required="true" requiredMessage="Select Sales-Order" height="333">
                                        <f:selectItem itemLabel="Select One" itemValue="" noSelectionOption="true"/>
                                        <f:selectItems value="#{EVMView.options(EVMView.selectedModule,questions.question_ID)}" var="values" itemLabel="#{values.evmOption}" itemValue="#{values.evmOption}"/>
                                        <p:ajax event="change" update="answerText" listener="#{EVMView.getAnswers}" rendered="answerText"/>
                                    </p:selectOneMenu>
                                    <p:outputLabel for="answerText" value="Answer:"  />
                                    <p:inputText id="answerText" value="#{EVMView.answer}" style="width:400px;" readonly="#{EVMView.readOnlyText}"/>
                                        <p:panelGrid columns="2" id="panelwv2" rendered="#{EVMView.visibleParam1}">
                                            <p:outputLabel for="param1" value="#{EVMView.param1Name}"/>
                                            <p:inputText id="param1" value="#{EVMView.param1}"/>
                                        </p:panelGrid>
                                        <p:panelGrid columns="2" id="panelwv3" rendered="#{EVMView.visibleParam2}">
                                            <p:outputLabel for="param2" value="#{EVMView.param2Name}"/>
                                            <p:inputText id="param2" value="#{EVMView.param2}"/>
                                        </p:panelGrid>
                                        <p:panelGrid columns="2" id="panelwv4" rendered="#{EVMView.visibleParam3}">
                                            <p:outputLabel for="param3" value="#{EVMView.param3Name}"/>
                                            <p:inputText id="param3" value="#{EVMView.param3}"/>
                                        </p:panelGrid>
                                    <p:panelGrid columns="1" id="panelwv1" closable="true" toggleable="true" widgetVar="panel_wv1">
                                            <h:form>
                                                <p:fileUpload listener="#{fileUploadView.handleFileUpload}" mode="advanced" dragDropSupport="false"
                                                multiple="true" sizeLimit="1000000" fileLimit="3"
                                                allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>
                                            </h:form>   
                                    </p:panelGrid>
                                    <p:commandButton value="Save EVM Record" style="width:35%;">
                                        <p:ajax listener="#{EVMView.saveRecord()}" update="growl answertype_menu"/>
                                    </p:commandButton>
                                    </p:panelGrid>
                                </p:rowExpansion>
                             </p:dataTable>
                </h:form>

EVMView.java

private boolean readOnlyText=true;
    private String param1Name;
    private boolean visibleParam1=false;
    private String param1;
    private String param2Name;
    private String param2;
    private boolean visibleParam2=false;
    private String param3Name;
    private String param3;
    private boolean visibleParam3=false;

public String getParam3Name() {
        return param3Name;
    }
    public void setParam3Name(String param3Name) {
        this.param3Name = param3Name;
    }
    public String getParam3() {
        return param3;
    }
    public void setParam3(String param3) {
        this.param3 = param3;
    }
    public boolean isVisibleParam3() {
        return visibleParam3;
    }
    public void setVisibleParam3(boolean visibleParam3) {
        this.visibleParam3 = visibleParam3;
    }
    public boolean isVisibleParam2() {
        return visibleParam2;
    }
    public void setVisibleParam2(boolean visibleParam2) {
        this.visibleParam2 = visibleParam2;
    }
    public String getParam2Name() {
        return param2Name;
    }
    public void setParam2Name(String param2Name) {
        this.param2Name = param2Name;
    }
    public String getParam2() {
        return param2;
    }
    public void setParam2(String param2) {
        this.param2 = param2;
    }
    public String getParam1Name() {
        return param1Name;
    }
    public void setParam1Name(String param1Name) {
        this.param1Name = param1Name;
    }
    public boolean isVisibleParam1() {
        return visibleParam1;
    }
    public void setVisibleParam1(boolean visibleParam1) {
        this.visibleParam1 = visibleParam1;
    }
    public String getParam1() {
        return param1;
    }
    public void setParam1(String param1) {
        this.param1 = param1;
    }
    public boolean isReadOnlyText() {
        return readOnlyText;
    }
    public void setReadOnlyText(boolean readOnlyText) {
        this.readOnlyText = readOnlyText;
    }

I'm saving values to my oracle database like this

this.evmParameters.setParamValue(getParam1());
evmService.saveParameter(evmParameters);

But when I opened my database table the parameter value comes null. Is it about panelgrids in main panelgrid?

demir5334
  • 215
  • 7
  • 17
  • Check F12 Network tab and see what parameters are being submitted. Also you don't need `p:ajax` inside the CommandButton. CommandButton is AJAX by default so remove that `p:ajax` and move those params right to the CommandButton itself. – Melloware Feb 23 '21 at 00:56
  • @Melloware I checked the network tab and param1 is in there. **form_2%3Amydatatable%3A2%3Amydatatable2%3A1%3Aparam1: HFB064** – demir5334 Feb 23 '21 at 06:48
  • OK somehow its not getting to your backing bean though. You might have to keep debugging. – Melloware Feb 23 '21 at 15:58

0 Answers0