您的位置:首页 > 编程语言 > Java开发

页面使用struts2标签的悲剧bug

2015-04-24 17:57 302 查看
直接上代码了:在页面input标签中嵌套s:property赋值语句

 

<input id="Category" name="Category" value='<s:property value="Category"/>'/>

 
 

仔细看,为了不使得input标签里面双引号套双引号,在value的地方使用了单引号'做范围界定。今天被测试发现一个悲剧的bug。。

 

如果value的值带有单引号',用s标签输出到页面就会被截断。

 

<input id="fuwuCategory" name="fuwuCategory" value='我爱'悲剧'/>

 

比如 value=我爱'悲剧,那么html输出将会是: 只能看到“我爱”,单引号及"悲剧"都消失了。。。

 

 

所以正确的写法只能是下面这样的:S标签输出值,只能用双引号包裹。

但是这样双引号嵌套,看起来是不符合html规范的

 

<input id="fuwuCategory" name="fuwuCategory" value="<s:property value="spinfo.fuwuCategory"/>"/>

  
 

------------------------------ps..--------------------------------------

1.关于html引号的使用:

 

//正确
<input value="外双内单-OK" type="button" onclick="alert('OK');" />
<input value="外单内双-OK" type="button" onclick='alert("OK");' />

//错误示例
<input value="外双内双-错误" type="button" onclick="alert("OK");" />
<input value="外单内单-错误" type="button" onclick='alert('OK');' />

 

 

2.html转义和js转义的区别:

 

//错误,html中使用js语法
<input value="Test" type="button" onclick="alert(\"OK\");" />

//正确
<input value="HTML转义字符"(& q u o t ;)-OK" type="button" onclick="alert("OK");" /><br />

 
3.js的引号多级嵌套,早期一篇js引号嵌套的备忘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: