xml作为参数的兄弟们要注意了

本文讲述了在使用XML作为参数传递给Struts时需要注意的问题。如果不使用encodeURIComponent对XML进行编码,则可能会导致XML中的特殊字符被错误地解析,从而使得部分XML内容丢失。文章提供了正确的处理方法并解释了相关的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将xml作为参数的兄弟们注意了,请将你们的xml,encodeURIComponent()了以后再post到你们的struts,否则,一些特殊字符,比如">",在xml中会被转义成">"。

 

到了struts端," > "中的"&"会被理解成URL的参数分割符,也就是说,“ > ”成了另一个参数,这个时候,所有在" > "之后的xml都会被截断,成了另一个参数,java端解析这个不完整的xml就会报错。

 

因此,你必须把你的xml做了encodeURIComponent(xml)以后再post到服务器端,这样解析出来的xml才是完整的。

 

因为,如果你的xml如果没有逃逸字符出现,就不会暴露出这个问题,所以,我在这里提醒没有发现问题的兄弟们,务必加上这个encodeURIComponent,不过别忘记要重新测试你的代码。

 

(一般struts端会自动解码,如果struts端没有解码,就使用java.net.URLDecoder.decode(String s, String enc))

 

 

escape 方法

String 对象编码以便它们能在所有计算机上可读,

escape( charString )

必选项 charstring 参数是要编码的任意 String 对象或文字。

说明

escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 % xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。

字符值大于 255 的以 %u xxxx 格式存储。

注意   escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURIencodeURIComponent 方法。

encodeURI 方法

将文本字符串编码为一个有效的统一资源标识符 (URI)。

encodeURI( URIString )

必选的 URIString 参数代表一个已编码的 URI。

说明

encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI ,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。

encodeURIComponent 方法

将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。

encodeURIComponent( encodedURIString )

必选的 encodedURIString 参数代表一个已编码的 URI 组件。

说明

encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent ,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html ,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。

 

三种编码效果可以在这里试验:

http://xkr.us/articles/javascript/encode-compare/

### 如何在鸿蒙NEXT开发中实现顶部固定效果 在鸿蒙NEXT的应用开发过程中,为了实现页面布局中的顶部固定效果,可以通过合理配置容器组件(如`Column`或`Stack`)、调整子组件的排列方式以及利用间距属性来完成设计目标。以下是具体方法及其示例代码。 #### 使用 `Margin` 或者空白视图创建安全区域 为了避免某些视图紧贴屏幕顶部,通常会通过设置`margin`或者引入一个占位符视图(例如`Divider`),从而预留一定的空间作为安全区[^2]。这种方法简单有效,尤其适用于静态布局场景。 ```xml <Column> <!-- 创建一个高度固定的空白区域 --> <Divider height="10vp"/> <!-- 主要内容部分 --> <Text content="这里是主要内容" fontSize="18fp"/> </Column> ``` 上述XML片段展示了如何借助`Divider`构建一块隔离带以防止其他UI元素靠近顶端。 #### 动态计算并锁定位置 如果需求更加复杂——比如需要动态响应不同设备尺寸的变化,则可能需要用到更灵活的技术手段,像绑定数据模型驱动界面更新机制等高级特性。不过对于单纯追求“固定于上方”的目的而言,仅需指定合适的定位参数即可达成预期成果。 考虑下面这个例子,它演示了怎样运用`Stack`叠加层配合绝对坐标系达到让某个控件始终停留在最上面的效果: ```xml <Stack alignment="start"> <!-- 背景或其他基础结构 --> <Rectangle color="#FFFFFF"/> <!-- 固定在顶部的内容 --> <Text content="Top Fixed Text" top="0vp" left="0hp" width="match_parent" height="wrap_content" backgroundColor="#FFD700" padding="5vp"/> </Stack> ``` 这里采用了`Stack`布局模式,并给待固定的文本设置了精确的位置数值(`top`, `left`),使其能够无视其余兄弟节点的影响而独立存在。 另外值得注意的是,在处理涉及动画过渡的操作时(如同引用所提到的情况),应当注意同步调整关联样式选项,例如`fitMode`的选择会影响最终呈现形态[^4]。 #### 结合实际项目经验总结最佳实践 从已有资料来看,无论是制作互动性强的小工具还是复杂的多功能模块,恰当选用各类内置构件都是成功的关键之一[^1][^3]。因此建议开发者们深入研究官方文档里关于各部件特性的描述说明,以便更好地满足特定业务逻辑下的视觉表现要求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值