如何填充Struts2下拉菜单?

时间:2017-10-03 16:26:08

标签: java jsp struts2

我正在使用Struts2,我正在尝试使用<s:select>标记填充下拉列表但由于某种原因我在下拉列表中看不到任何内容。在后端,列表wsAuditConfig将填充值,但不会显示在下拉列表中。

动作

private List<String> wsAuditConfig;

public void prepare() throws Exception {
    AppConfigClient appConfigClient = ( AppConfigClient ) AppContext.getBean( Constants.SPRING_BEAN_CMS_APP_CONFIG_CLIENT );
    String appCode = ( String ) System.getProperty( Constants.SPRING_BEAN_EIS_APP_CODE );

    List<AppConfig> list = new ArrayList<>();
    wsAuditConfig = new ArrayList<>();

    GetAppConfigServiceRequest request = appConfigClient.getGetAppConfigServiceRequest();
    request.setParameters( appConfigClient.getAppConfigRequestParameters( appCode, null ) );
    request.setAccepts( ContentType.JSON );

    GetAppConfigServiceResponse response = appConfigClient.get( request );
    if( response != null && response.getEntity() != null ) {
        list = response.getEntity().getConfig();
        for( AppConfig appConfig : list ) {
            if( appConfig.getConfigCode().equals( Constants.APP_WS_AUDIT_CONFIG ) ) {
                wsAuditConfig.add( appConfig.getKeyName1() );
            }
        }
    }
    this.records = new ArrayList<>();
}

JSP

<s:form action="viewWSAuditXml" namespace="/eismain/cmswsaudit/view" name="wsAudit">
    <s:select name="wsName" headerValue="" headerKey="" list="wsAuditConfig" listKey="wsName" listValue="wsName" key="ws.audit.view.select" onchange="wsAudit.submit();" cssStyle="min-width: 220px;"/>
</s:form>

2 个答案:

答案 0 :(得分:0)

什么是wsName?由于您有String更改列表,因此选择如下,并且它可以解决问题。

<s:select name="wsName" headerValue="" headerKey="" list="wsAuditConfig"   onchange="wsAudit.submit();" cssStyle="min-width: 220px;"/>

答案 1 :(得分:0)

下拉列表应填入prepare()方法,操作类应该为其实现Preparable,并且操作配置中应该有prepare拦截器。

需要吸气剂

private List<String> wsAuditConfig;
public List<String> getWsAuditConfig() { return wsAuditConfig; }

由于它是一个字符串列表,因此列表元素没有键或值属性。因此,可以在没有listKeylistValue的情况下使用它。

<s:form action="viewWSAuditXml" namespace="/eismain/cmswsaudit/view" name="wsAudit">
    <s:select name="wsName" headerValue="" headerKey="" list="wsAuditConfig" key="ws.audit.view.select" onchange="wsAudit.submit();" cssStyle="min-width: 220px;"/>
</s:form>

如果要在下拉列表中列出对象,则应使用键入列表,并提供类似于this回答的键和值。