一、在FTL中使用下拉框,多数场景是从action中的List来获取下拉框的内容,然后通过ftl中的<#list>遍历出来。在遍历的过程中,还要判断value是否与特定在值,如相等,则选中。一个简单的下拉框搞的很复杂。
二、使用struts2中的select 标签可以很好的解决这个问题,先看代码:
<@s.select id="checkBrandLimit" cssClass="selectBig selectSearch" value="%{tempProduct.brand.id}" name="tempProduct.brand.id" list="inshopMerchantBrands" listKey="brandId" listValue="brandName" headerKey="" headerValue="--请选择--" onchange="checkBrandLimitation(${ businessUserVo.merchantId },'%{tempProduct.brand.id}')" />
注:value的值:是选中某个<option> 对应的值,list:是actioin中定义List,listKey 是List中对象的属性,以这个属性为option 的value,listValue 是List中对象的属性,以这个属性为option的名称。headerKey 与headerValue 是下拉框的默认显示值。name 是提交到action中对应的属性。一行代码就可以搞定。
三、上面的代码中List值来自后台中Action的LIst ,还有一个场景:用户自己定义下拉框。代码如下:
<#assign contractType=r"#{'0':'0元购机','1':'购机送话费','2':'存一得三'}"> <@s.select id="contractTypeId" cssClass="" name="mobileContractManageRpcDto.contractType" list="${contractType}" value="%{mobileContractManageRpcDto.contractType}" listKey='key' listValue='value' headerKey="" headerValue="所有" />
注:这个代码与上面的代码有两处不一样:1、自定义变量时“r”,这个关键关告诉ftl编译器,r 后面字符串是源生态 及raw类型, 不进行解释执行。List 的值是:${变量名},其他属性不变。
总结:在ftl中,尽可能多使用struts2的标签,struts2 标签有简单,且有最好的容错性。
相关推荐
这样做是为了确保Struts2在服务器启动时能优先加载这个servlet,以便支持FreeMarker模板中使用Struts2的标签。 在`struts.xml`配置文件中,定义一个action,比如`test`,并指定其结果类型为`freemarker`,这样当...
标签"源码 工具"暗示了解决这个问题可能需要查看Struts2的源代码,以及使用一些工具进行调试或定制。开发者可能需要深入理解Struts2的拦截器(Interceptors)、结果类型(Result Types)以及模板引擎(如Freemarker...
6. **在模板中使用标签**: 最后,在你的FreeMarker模板文件中,你可以像使用其他内置标签一样使用你的自定义标签。 通过这种方式,开发者可以创建出高度定制的UI组件,提高代码的可读性和可维护性。自定义标签使得...
本文将深入探讨如何在Struts2中创建自定义标签,特别是基于`UITag`的实现方法,以及其背后的原理和步骤。 #### 二、Struts2自定义标签的构成 Struts2的自定义`UITag`由三部分组成: 1. **UIBean**:用于定义标签...
这个文件是我从Struts2老版本中摘出来的FreemarkerServlet,将其加入到项目中,然后在web.xml中增加下面的代码即可。 <!-- FreeMarker Servlet --> <servlet> <servlet-name>freemarker</servlet-name> ...
在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **配置FreeMarker**: - 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,...
该属性指定了是否允许在Struts 2标签中使用表达式语法,默认值为`true`,表示允许使用。 #### struts.devMode 此属性设定了Struts 2应用是否使用开发模式,默认值为`false`。当设置为`true`时,在应用出错时可以...
在完成上述步骤后,我们可以在JSP页面中使用`<gage:gageTextField>`标签,并传入`lockMode`属性,如下所示: ```jsp ... ``` 通过这种方式,我们成功地扩展了Struts2的文本字段功能,创建了一个具有新属性`...
3. **导入 Struts2 标签库**:FreeMarker 默认不支持 Struts2 的标签,需要将 `struts-tags.tld` 文件复制到工程的 `WEB-INF` 目录下,以便在模板中使用。 4. **配置 Struts2 动作**:在 `struts.xml` 文件中定义 ...
Struts2的核心功能包括动作调度、结果映射、拦截器等,而其强大的扩展性则体现在众多插件的使用上。这篇博文主要探讨的是Struts2中的"convention-plugin",这是一个自动配置插件,极大地简化了开发过程。 在传统的...
Struts2整合FileUpload是Java Web开发中常见的一项任务,它允许用户在应用程序中上传文件。Struts2是一个强大的MVC框架,而FileUpload则是一个处理文件上传的库,通常与Struts2结合使用,以提供更完善的文件上传功能...
本示例关注的是如何在Freemarker(FTL)中创建一个通用的`select`下拉框,以满足各种Web界面中的下拉选择需求。通过单元测试确保其灵活性和可复用性。 首先,理解`select`下拉框在HTML中的基本结构,它由`<select>`...
在Struts2中,`checkboxlist`标签是用于显示一组可选的复选框,通常用于用户在表单中多选选项。本文将深入探讨`checkboxlist`标签以及如何实现换行显示。 在Struts2的标签库中,`<s:checkboxlist>`标签主要用于创建...
ftl的使用非常普及,但是,但是里面的语法却让人很难懂得,这里有详细的技术帮助文档
在Struts中,循环标签允许开发者遍历集合数据,如数组、列表、Map等,并将它们的内容逐个展示在页面上,而无需编写过多的Java脚本或JSP EL表达式。 在Struts 1中,有两个主要的循环标签:`<logic:iterate>`和`...
7. **Freemarker的变量和表达式**:Freemarker允许在模板中使用`<#if>`, `<#foreach>`, `${variable}`等指令进行条件判断、循环和数据输出。同时,可以通过`<@s.action>`调用Struts2的标签库,实现更复杂的交互。 8...
- **标签库**:结合Struts2的标签库,如`s:form`、`s:textfield`等,使模板更加简洁。 - **模板继承**:通过`<#include>`或`<@import>`指令,实现模板的复用和继承。 - **宏定义**:使用`<#macro>`定义可重用的代码...
通过Struts2的标签库,可以在FTL页面中方便地调用Action方法,获取数据并显示。例如,`<s:property value="someProperty"/>`会输出Action对象的`someProperty`属性值。 **使用示例** 1. 在Action类中定义一个属性`...
视图层展示的数据可以通过Struts2的标签库(如s:property、s:form等)轻松地从模型中获取并显示。 在项目"Student_Struts2"的压缩包中,可能包含以下几个部分: 1. `struts.xml` - Struts2的核心配置文件,定义了...
在Struts2中使用FreeMarker作为视图技术,需要进行以下步骤: 1. **配置依赖**:在项目的`pom.xml`或`build.gradle`文件中,添加FreeMarker的依赖库。 2. **配置Struts2**:在`struts.xml`配置文件中,指定使用...