在jsf中传递参数,素数面



我有两个对话框。在第一个对话框中,用户写入modulename,我需要将我的modulename传递到第二个对话框,并将这个modulename值设置为名为#{paramController.prarameter.moduename}的bean

请给我一些想法,如何从一个bean中获取参数并将其设置为另一个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>

首先,您有一个嵌套的标记<h:form>.....<h:form> ... </h:form> </h:form>。你需要摆脱这个。

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;
}
}

来自UISampleManagedBean2.setValueOfModuleName(SampleManagedBean1.getValueOfModuleName);

据我所知,您有两个bean,一个用于对话1,另一个用于对话框2。

您可以传递"paramController.parameter"(存储在第一个bean中)作为方法(第二个bean中的方法)的参数,该方法显示dialog2。

最新更新