表单中输入了<b></b>、单引号、双引号等内容,正确保存后,列表页面、查看详情页面、编辑页面,都出现了问题不能正确显示上面的内容。
怎样才能正确显示呢?有一个办法就是在将这些内容放到Html页面上显示之前,先进行Html转义。
查看详情页面、编辑页面的Html转义方法,在Java标准框架中,使用的是Freemarker作为页面的模板技术,它内置了一个函数xhtml,就是用来对内容进行Html转义的。看下面的代码:
<tr>
<td><label>名称</label></td>
<td>${((topicCase.name)!'')?xhtml}</td>
</tr>
<tr>
<td>
<label required="true
"
>名称</label>
</td>
<td>
<input name="name"
art="textbox"
value="${((topicCase.name)!'')?xhtml}"
form_fill="true
"
required="true
"
validType="length[1,50]"
/>
</td>
</tr>
列表页面使用的是jart的grid控件,它的数据格式为json,所以我们在json序列化时进行Html转义。Java标准框架中提供了一个注解@ResponseEscape,以指明在进行json序列化时,要进行Html转义,代码如下:
@ResponseEscape
public
PaginationList<TopicCase> getList(@PaginationParam PaginationCriteria paginationCriteria,
@RequestEscape(policy=EscapePolicy.Sql) @RequestParam(required = false
) String
name,
@RequestParam(required = false
) TopicCaseState state,
@DateParam Date beginTime,
@DateParam Date endTime) {}
要使@ResponseEscape生效,还得在servlet-context.xml中进行如下配置:
<annotation-driven conversion-service="conversionService"
>
...
<return-value-handlers>
<beans:bean class="com.iflytek.framework.web.mvc.RequestResponseEscapeMethodProcessor"
>
<beans:property name="contentType"
>
<beans:value>
application/json;charset=UTF-8</beans:value>
</beans:property>
<beans:property name="charset"
>
<beans:value>
utf-8</beans:value>
</beans:property>
...
</beans:bean>
</return-value-handlers>
</annotation-driven>
分享到:
相关推荐
FreeMarker会自动处理转义字符,确保生成的XML文档符合规范。 4. FreeMarker生成Word和Excel: 对于生成Word(.doc或.docx)和Excel(.xls或.xlsx)文档,FreeMarker不能直接操作,因为它们不是纯文本格式。通常,...
- **FreeMarker**内置了多种转义功能,比如HTML转义、XML转义等,可以通过简单的指令实现。 - **Velocity**在这方面的支持较弱,需要开发者自己实现或依赖外部库。 6. **字符处理**: - **FreeMarker**支持更...
html`用于转义HTML特殊字符,`?replace`进行字符串替换,`?upper_case`和`?lower_case`进行大小写转换。此外,还有算术操作符(+、-、*、/、%)、比较操作符(==、!=、<、>、、>=)和逻辑操作符(&&、||、!)。 6. ...
url`等转换器,可以将字符串转义为安全的HTML或URL。例如: ```html <#assign unsafeStr = "<script>alert('XSS');</script>"> ${unsafeStr?html}</p> ``` 输出:"<script>alert('XSS');</...
6. 为 Web 准备:在模板语言中内建处理典型 Web 相关任务(如 HTML 转义)的结构。 7. 智能的国际化和本地化:字符集智能化(内部使用 UNICODE),数字格式本地化敏感,日期和时间格式本地化敏感等。 8. 强大的 XML ...
4. **为Web准备**:内建处理Web相关的任务,如HTML转义,支持集成到Model2 Web框架中,替代JSP。同时,它支持JSP标记库,遵循MVC模式,分离视觉设计和应用程序逻辑。 5. **智能的国际化和本地化**:FreeMarker支持...
1. 模板:Freemarker模板是HTML或者其他格式的文本文件,其中包含了Freemarker特定的指令和表达式,用来插入、控制或计算数据。 2. 数据模型:这是提供给Freemarker模板的数据源,通常由应用程序创建并传递给...
- `#autoesc`:自动转义HTML特殊字符,防止XSS攻击。 - `#function`:定义函数,类似于宏,但支持参数。 5. **表达式和逻辑运算** - 字符串连接:使用`~`符号连接字符串。 - 数学运算:支持加减乘除、取余、...
7. **预处理与后处理**:开发者可以通过自定义处理器对模板进行预处理(如添加全局变量)和后处理(如HTML转义)。 8. **模板继承**:使用`<#assign>`和`<#macro>`,可以创建可重用的模板片段和宏,实现模板的模块...
- **内建Web功能**: 内置了处理Web相关任务的结构,如HTML转义等。 - **集成框架**: 可以集成到Model2 Web应用框架中作为JSP的替代方案。 - **支持JSP标记库**: 允许在模板中使用JSP标签。 - **国际化和本地化**...
html`用于转义HTML特殊字符,`?upper_case`将字符串转化为大写,`<#list>`用于遍历集合等,这些功能极大地丰富了模板的表达能力。 6. **自定义指令与宏**: 开发者可以创建自定义指令来扩展Freemarker的功能,例如...
html`用于转义HTML实体,`?length`用于获取集合的长度。此外,还可以在模板中调用对象的方法,如`${list.sort()}`。 7. **模板继承与导入**:FreeMarker支持模板继承,通过`<#include>`和`<#macro>`指令,可以实现...
对于Web应用,FreeMarker内置了处理Web相关任务的功能,如HTML转义,并且可以与Model2框架(如Struts)无缝集成,作为JSP的替代。同时,它支持JSP标记库,便于MVC模式的实现,确保页面设计师和程序员的工作分离。 ...
5. 转义:`<@...>`用于调用Freemarker内置的函数或宏,例如`<@include>`用于包含其他模板。 三、Freemarker与Spring MVC集成 在Java Web开发中,通常结合Spring MVC框架使用Freemarker。Spring MVC提供了一种方便的...
Freemarker是一个强大的模板引擎,常用于Web开发中生成动态HTML页面。它是Java语言的一个开源项目,遵循Apache软件基金会的Apache License。这个“freemarker中文学习资料”压缩包提供了详尽的网页版API文档,对于想...
- **输出转换**:内置多种输出转换功能,如HTML转义、内容压缩等,还可以自定义转换规则。 ##### 3. 通用数据模型 - **对象封装**:通过插件式对象封装机制,使得Java对象能够在模板中以统一的方式呈现。 - **抽象...
- **文本插值**:在HTML文本中,FreeMarker会自动转义特殊字符。可以通过`<#escape>`和`<#noescape>`控制转义行为。 - **数字插值**:可以使用`number_format`设置格式,或者使用`string`函数自定义格式。 - **日期/...
4. 静态文本和HTML转义:`@ftlvar`用于指定变量类型,防止XSS攻击;`<@html>`标记用于安全输出HTML。 五、最佳实践与注意事项 1. 模板设计:保持模板简洁,避免过于复杂的业务逻辑。 2. 错误处理:合理配置错误...
- `no_esc`: 禁止FreeMarker对字符串进行转义。 7. **自定义函数** 除了内置函数,FreeMarker还支持通过`<#function>`标签创建自定义函数,以便扩展其功能。 了解并熟练使用这些内置函数,能够显著提升在...
html`(转义HTML特殊字符)、`?replace`(字符串替换)等,以及`<#list>`、`<#nested>`等指令,增强了模板的功能。 7. **模板继承和导入**: - FreeMarker支持模板继承,通过`<#import>`和`<@macro>`,可以创建可...