abekmuratov
abekmuratov

Reputation: 211

Pass parameter in jsf, primefaces

I have 2 dialogs. In the 1st dialog user writes modulename and I need to pass my modulename to the second dialog and set this modulename value to bean called #{paramController.parameter.modulename}

Please, give me some ideas how to get parameter from one bean and set it to another bean?

                    </p:inputText>

                    <p:outputLabel value="Description" for="moduledescription" />
                    <p:inputTextarea id="moduledescription" rows="4" cols="53" autoResize="false" value="#{modulesController.selected.moduledescription}"/>

                    <p:outputLabel value="Database Name :" for="moduledbname" />
                     <p:selectOneMenu id="moduledbname" value="#{modulesController.selected.moduledbname}" style="width:342px">
                                <f:selectItem itemLabel="Select Connection" itemValue="" noSelectionOption="true" />
                                <f:selectItems var="con" value="#{sqlserverController.itemsAvailableSelectOne}" itemValue="#{sqlserverController.getSqlserver(conName)}" />
                                <p:ajax update="@this"/>
                     </p:selectOneMenu>

                    <p:outputLabel value="Value :" for="modulevalue" />
                    <p:inputTextarea id="modulevalue" rows="8" cols="53" autoResize="false" value="#{modulesController.selected.modulevalue}"/>



                </p:panelGrid>
                <p:commandButton  actionListener="#{modulesController.create}" icon="ui-icon-check"  value="Save" update="display,:ModulesListForm:datalist,:growl" oncomplete="handleSubmit(args,'ModulesCreateDialog');"/>
                <p:commandButton id="btnAdd"  value="Add Parameter" icon="ui-icon-plusthick" onclick="PF('dlg1').show();">

                </p:commandButton>
                <p:commandButton value="Cancel" icon="ui-icon-closethick" onclick="ModulesCreateDialog.hide()"/>
                <br/>                    
            </h:panelGroup>
            <br/>


            <h:form id="ParamForm">
                <p:dialog id="AddParamDlg" header="Add Parameter" widgetVar="dlg1" minHeight="40">                        
                <h:panelGroup id="displayParam">
                <p:panelGrid columns="2">
                    <p:outputLabel value="Parameter Name :" for="paramname2" />
                    <p:inputText id="paramname2" value="#{paramController.parameter.paramname}"    style="width:332px" title="#{bundleModules.CreateModulesTitle_modulename}" >

                    </p:inputText>

                    <p:outputLabel value="Default Value :" for="defaultvalue2" />
                    <p:inputText id="defaultvalue2" value="#{paramController.parameter.defaultvalue}" style="width:332px" title="#{bundleModules.CreateModulesTitle_modulename}"/>

                    <p:outputLabel value="Module Name :" for="parammodulename2" />
                    <p:selectOneMenu id="parammodulename2" value="#{paramController.parameter.modulename}" style="width:342px">
                                <f:selectItem itemLabel="Select Module Name" itemValue="" noSelectionOption="true" />
                                <f:selectItems var="con" value="#{modulesController.itemsAvailableSelectOne}"  itemValue="#{modulesController.getModules(paramname)}" />
                                <p:ajax update="@this"/>
                    </p:selectOneMenu>
                </p:panelGrid>
                    <p:commandButton action="#{paramController.addNewParameter}" value="Add" update="displayParam, :ModulesCreateForm:ParamForm" onclick="PF('dlg1').hide()" />

                </h:panelGroup>
            </p:dialog>
            </h:form>

        </h:form>

Upvotes: 0

Views: 1680

Answers (2)

Adheep
Adheep

Reputation: 1585

First of all you have a nested tag <h:form>.....<h:form> ... </h:form> </h:form>. You need to get rid of this.

SampleManagedBean1.java

@ManagedBean(name="SampleManagedBean1")
@ViewScoped
public class SampleManagedBean1 {

private String mModuleName = "";

public String getModuleName() {
    return mModuleName;
}

public void setModuleName(String moduleName) {
    this.mModuleName = moduleName;
}

/**
 * invoke this API from UI to set value in this bean
 * 
 * @param moduleName
 */
public void setValueOfModuleName(String moduleName) {
    this.mModuleName = moduleName;
}

/**
 * Invoke this API from UI to get value from this bean
 * 
 * @return
 */
public String getValueOfModuleName() {
    return mModuleName;
}
}

SampleManagedBean2.java

@ManagedBean(name="SampleManagedBean2")
@ViewScoped
public class SampleManagedBean2 {

private String mModuleName = "";

public String getModuleName() {
    return mModuleName;
}

public void setModuleName(String moduleName) {
    this.mModuleName = moduleName;
}

/**
 * invoke this API from UI to set value in this bean
 * 
 * @param moduleName
 */
public void setValueOfModuleName(String moduleName) {
    this.mModuleName = moduleName;
}

/**
 * Invoke this API from UI to get value from this bean
 * 
 * @return
 */
public String getValueOfModuleName() {
    return mModuleName;
}
}

From UI SampleManagedBean2.setValueOfModuleName(SampleManagedBean1.getValueOfModuleName);

Upvotes: 1

sQer
sQer

Reputation: 1151

As I understood you have two beans, one for dialog 1 and the second for dialog2.

You can pass the "paramController.parameter" (stored in first bean) as a parameter for method (method inside second bean) which shows dialog2.

Upvotes: 0

Related Questions