js中使用s(c)标签

在js或者jquery中使用s标签,其实并不难理解,s标签也只是一个标签而已,当你想象成js+s标签=js+html标签就理解了

例如:

<script type="text/javascript">

var  username = '<s:property value="%{user.username}"/>';

var password = '<s:property value="#session.user.password"/>';

var sex = ""; 

<s:if test="%{user.flag}">
  sex= <s:property value="%{user.sex}"/>;
 </s:if>

</script>

通过上面的方式,就可以在js中通过s标签直接获得后台数据,不用通过html标签元素中转或者通过ajax了,够简单

PS:

1、在js中使用s标签进行取值,需要将s标签写在单引号或者双引号内部,否则页面会报警告,如果是<s:if>这样的标签就没有限制了,测试的s标签不多,别的问题就不知道了,嘿嘿

2、如果你想在js文件中使用s标签,是取不出来值的,解决办法是:在纯js的<script>标签内部定义变量并进行取值,然后在js文件中引用你定义的变量

再多说一点:

下面这个例子中单引号的使用在于:通过EL表达式取值,如果取出来,则显示;如果出不出来值,则不显示,也不显示null,如果使用${param.reqFormId}==null做判断,永远也不会相等

例如:注意单引号的使用,也可以是双引号

 var pageCount='${pagination.pageCount}';
 if(pageCount==1){
  alert("ok");
 }

或者

 if(pageCount==‘1’){
  alert("ok");
 }
注意单引号
 var formId='${param.reqFormId}'==''?'0' : '${param.reqFormId}';

在s标签中使用,脚本标签,位置、单、双引号的使用错误与正确的对比(使用tomcat5.0.28以上版本,tomcat5.0.28一下,下面的方式没有错):

错误:

     <% String a = request.getAttribute("key").toString();  %>
      <s:if test="<%= a.equals("mainMember") %>"' >
        。。。。。。。

      </s:if>

错误分析:双引号套用双引号指定是不允许的,所以要将脚本标签外层的双引号改为单引号

     <% String a = request.getAttribute("key").toString();  %>
      <s:if test='<%= a.equals("mainMember") %>’ >
        。。。。。。。

      </s:if>

采用这样的方式回报:

The method setTest(String) in the type ElseIfTag is not applicable for the arguments (boolean)

意思是:该方法setTest(字符串)类型ElseIfTag中是不适用的参数值(布尔值)

所以再换一种方式:

     <% String a = request.getAttribute("key").toString();  %>
      <s:if test='"mainMember".equals(<%=a %>)' >
        。。。。。。。

      </s:if>

ok,不过我感觉这个和上面那个都是获得的boolean值,但是这个却可以了,没明白,反正遇到这样的问题,就是两个字:折腾,折腾单引号与双引号,折腾标签位置,总会成功的

原文地址:https://www.cnblogs.com/coprince/p/3534999.html