如何填充 Struts2 下拉菜单?
How to populate Struts2 dropdown menu?
我正在使用 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>
什么是wsName
?由于您有如下所示的字符串更改 select 列表并且它可以工作。
<s:select name="wsName" headerValue="" headerKey="" list="wsAuditConfig" onchange="wsAudit.submit();" cssStyle="min-width: 220px;"/>
下拉列表应该在 prepare()
方法中填充,为此操作 class 应该实现 Preparable
并且在操作配置中应该有 prepare
拦截器。
需要 getter
private List<String> wsAuditConfig;
public List<String> getWsAuditConfig() { return wsAuditConfig; }
由于它是一个字符串列表,因此列表的元素没有键或值属性。所以它可以在没有 listKey
和 listValue
.
的情况下使用
<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 答案中的方式。
我正在使用 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>
什么是wsName
?由于您有如下所示的字符串更改 select 列表并且它可以工作。
<s:select name="wsName" headerValue="" headerKey="" list="wsAuditConfig" onchange="wsAudit.submit();" cssStyle="min-width: 220px;"/>
下拉列表应该在 prepare()
方法中填充,为此操作 class 应该实现 Preparable
并且在操作配置中应该有 prepare
拦截器。
需要 getter
private List<String> wsAuditConfig;
public List<String> getWsAuditConfig() { return wsAuditConfig; }
由于它是一个字符串列表,因此列表的元素没有键或值属性。所以它可以在没有 listKey
和 listValue
.
<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 答案中的方式。