如何使用<s:checkboxlist />标记从List <MyObject>生成复选框?

安德烈·诺比利

我正在遵循一个教程,以使用<s:checkboxlist>标签创建多个复选框

我的项目和教程之间的区别在于,它使用aList<String>来生成复选框列表,而我有一个List<KMCountry>(并且需要根据KMCountry对象属性的文本值生成复选框列表)。

行动

List<KMCountry> kmCountryListAll;

public List<KMCountry> getKmCountryListAll() {
    return kmCountryListAll;
}

模型

@Entity
@Table(name = "KM_COUNTRY")
public class KMCountry implements Serializable {

    @Id
    @GeneratedValue
    private Long idCountry;

    @Column(name = "country")
    private String name;

    @Column(name = "workingHours")
    private String workingHours;

    // Getters and setters    
}

JSP

<s:checkboxlist label="Select Countries" 
                 list="kmCountryListAll" 
              listKey="idCountry" 
            listValue="name" 
                value="defaultCountry" />

但是这种方式是行不通的。

使用调试器,我看到它进入getKmCountryListAll()方法并返回kmCountryListAll列表,但是在视图中,我得到以下错误:

Expression parameters.name is undefined on line 38, column 32 in template/simple/checkboxlist.ftl.
The problematic instruction:
----------
==> ${parameters.name?html} [on line 38, column 30 in template/simple/checkboxlist.ftl]
 in user-directive s.iterator [on line 25, column 5 in template/simple/checkboxlist.ftl]
 in include "/${parameters.templateDir}/simple/checkboxlist.ftl" [on line 25, column 1 in template/css_xhtml/checkboxlist.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression parameters.name is undefined on line 38, column 32 in template/simple/checkboxlist.ftl.
    at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
    at freemarker.core.Expression.getStringValue(Expression.java:118)
    at freemarker.core.Expression.getStringValue(Expression.java:93)
    at freemarker.core.StringBuiltins$StringBuiltIn._getAsTemplateModel(StringBuiltins.java:71)
    at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
    at freemarker.core.Expression.getStringValue(Expression.java:93)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.MixedContent.accept(MixedContent.java:92)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.Environment.visit(Environment.java:299)
    at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.IfBlock.accept(IfBlock.java:82)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.MixedContent.accept(MixedContent.java:92)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.Environment.include(Environment.java:1483)
    at freemarker.core.Include.accept(Include.java:169)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.MixedContent.accept(MixedContent.java:92)
    at freemarker.core.Environment.visit(Environment.java:210)
    at freemarker.core.Environment.process(Environment.java:190)
    at freemarker.template.Template.process(Template.java:237)
    at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157)
    at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)
    at org.apache.struts2.components.UIBean.end(UIBean.java:513)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
    at jsp_servlet._countryarea.__showmultiselectcountry._jsp__tag0(__showmultiselectcountry.java:107)
    at jsp_servlet._countryarea.__showmultiselectcountry._jspService(__showmultiselectcountry.java:70)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:526)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:253)
    at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:157)
    at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
    at egp.prc.km.utils.interceptors.LiferayAjaxInterceptor.intercept(LiferayAjaxInterceptor.java:28)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.servlet.StrutsServlet.service(StrutsServlet.java:76)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
<17-mar-2015 14.57.09 CET> <Error> <HTTP> <BEA-101020> <[ServletContext@771696009[app:KM_Web_war_exploded module:KM-Web-1.0.0 path:/KMPortlets spec-version:2.5]] Servlet failed with Exception
java.lang.NullPointerException
    at weblogic.servlet.internal.ServletResponseImpl.sendContentError(ServletResponseImpl.java:611)
    at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:655)
    at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:819)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:519)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    Truncated. see log file for complete stacktrace
> 

为什么?我想念什么?我该如何解决这个问题?

安德里亚·利吉奥斯(Andrea Ligios)

您需要将name属性添加<s:checkboxlist>标签中

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何标记由循环生成的没有ID的复选框?

来自分类Dev

使用checkBoxList在多列列中显示复选框

来自分类Dev

如何使用从ezMark生成的复选框?

来自分类Dev

如何使用从ezMark生成的复选框?

来自分类Dev

如何使用左侧的复选框从地图上删除标记?

来自分类Dev

如何删除动态生成的复选框?

来自分类Dev

如何使用jQuery隐藏ASP.Net CheckBoxList控件中复选框周围的边框?

来自分类Dev

如何在树枝中控制标记的复选框顺序

来自分类Dev

如何标记jQuery中的所有复选框

来自分类Dev

如何将Struts 2标记<s:checkbox>中的复选框的检查值获取到动作类中

来自分类Dev

如何在css中使用复选标记作为复选框

来自分类Dev

使用警报时如何在复选框中显示复选标记

来自分类Dev

如何使用数组生成复选框网格?

来自分类Dev

如何根据几个复选框过滤List <CustomClass>

来自分类Dev

标记多个复选框

来自分类Dev

如何使JavaScript生成的复选框持久化?

来自分类Dev

我如何“检查”动态生成的复选框?

来自分类Dev

AngularJS:使用ng-repeat生成复选框

来自分类Dev

使用@HTML.editor 生成 SelectListItem 复选框?

来自分类Dev

如何提交所有内容而无需多次单击以标记所有复选框?

来自分类Dev

如何在HTML中更改复选框的选中标记颜色?

来自分类Dev

单击<tr>标记复选框时如何做到这一点

来自分类Dev

如何标记由 DataGrid 选择上动态创建的复选框表示的用户角色已更改

来自分类Dev

无法使用复选框切换多个动态Google Maps标记点

来自分类Dev

在PHP上使用post在多页表单上选中(选中标记)相同的复选框

来自分类Dev

使用ng-model标记复选框ANGULAR.JS的值

来自分类Dev

如何根据选中的复选框禁用复选框?

来自分类Dev

使用jQuery的复选框

来自分类Dev

使用ITextSharp的复选框

Related 相关文章

  1. 1

    如何标记由循环生成的没有ID的复选框?

  2. 2

    使用checkBoxList在多列列中显示复选框

  3. 3

    如何使用从ezMark生成的复选框?

  4. 4

    如何使用从ezMark生成的复选框?

  5. 5

    如何使用左侧的复选框从地图上删除标记?

  6. 6

    如何删除动态生成的复选框?

  7. 7

    如何使用jQuery隐藏ASP.Net CheckBoxList控件中复选框周围的边框?

  8. 8

    如何在树枝中控制标记的复选框顺序

  9. 9

    如何标记jQuery中的所有复选框

  10. 10

    如何将Struts 2标记<s:checkbox>中的复选框的检查值获取到动作类中

  11. 11

    如何在css中使用复选标记作为复选框

  12. 12

    使用警报时如何在复选框中显示复选标记

  13. 13

    如何使用数组生成复选框网格?

  14. 14

    如何根据几个复选框过滤List <CustomClass>

  15. 15

    标记多个复选框

  16. 16

    如何使JavaScript生成的复选框持久化?

  17. 17

    我如何“检查”动态生成的复选框?

  18. 18

    AngularJS:使用ng-repeat生成复选框

  19. 19

    使用@HTML.editor 生成 SelectListItem 复选框?

  20. 20

    如何提交所有内容而无需多次单击以标记所有复选框?

  21. 21

    如何在HTML中更改复选框的选中标记颜色?

  22. 22

    单击<tr>标记复选框时如何做到这一点

  23. 23

    如何标记由 DataGrid 选择上动态创建的复选框表示的用户角色已更改

  24. 24

    无法使用复选框切换多个动态Google Maps标记点

  25. 25

    在PHP上使用post在多页表单上选中(选中标记)相同的复选框

  26. 26

    使用ng-model标记复选框ANGULAR.JS的值

  27. 27

    如何根据选中的复选框禁用复选框?

  28. 28

    使用jQuery的复选框

  29. 29

    使用ITextSharp的复选框

热门标签

归档