点集贵州电脑网
 
 
 梦想之源 ›› 灌水专区 ›› 在T4中S的问题 版主:
灌水专区
新建论坛
申请免费TS
1 / 1 页
<< 1 >>
跳转
 主题:在T4中S的问题
 
 lele
发表时间:[2007-11-08 14:21:43] [向作者发站内短信] [复制链接告诉朋友]
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0


 定义如下

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE page-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="com.longcredit.KEye.app.business.ActPage">
   
    <component  id="pid" type="Hidden">
        <binding name="value" value="ognl:deviceid"/>
    </component>
</page-specification>

也面代码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="" />
<meta name="description" content="" />
 <script type="text/javascript" src='dwr/interface/status.js'></script>
  <script type='text/javascript' src='dwr/engine.js'></script>
  <script type='text/javascript' src='dwr/util.js'></script>
        <script>
           var flag=false;
           function remove(name)
           {
            if(confirm("删除关键文件之后无法恢复,确认删除吗?"))
            {
              var parentid=document.getElementById("parentid").value;
              alert(parentid);
              status.removeKeyFile(parentid,name,deletex);
            }
           }  
           
           function deletex(data)
           {
           var e=document.getElementById("keyfiletable");

             for(var i=0;i<e.rows.length;i++)
             {
             var row=e.rows[i]; 
             if(row.id!=null && row.id!="" && row.id==data){
             e.deleteRow(i);
       i=i-1;
            }
           }
           }     
     </script>
 
</head>
<body>

 

 

 <div class="story">
 <p align="right"><a href="" jwcid="addImportFile"><font size="3">增加关键文件</font></a></p>
 <table border="0" cellpadding="0" cellspacing="0" class="cTable">
   <tr>
  <td class="contentTableLeft"></td>
  <td class="contentTable">

   <h3><img src="images/img_storage.gif" />关键文件</h3>
   <div class="sectionTables">
     <div class="innerSectionTables">
     <form jwcid="keyfile@Form">
   
            <table cellspacing="0" cellpadding="0" class="sTRD1" id=keyfiletable>
               <tr class="title">
     <td>名称</td>
     <td>大小</td>
     <td>权限</td>
      </tr>
      <tr id="ognl:importFile.name" jwcid="device_aix_importFileInfo" onmouseover="this.style.backgroundColor='#E5F2FF'" onmouseout="this.style.backgroundColor='#FFFFE5'" bgcolor="#FFFFE5">
        <td><span  jwcid="aix_importFileInfo_name"/></td>   
     <td><span  jwcid="aix_importFileInfo_capability"/></td>
     <td><a href="" jwcid="@PageLink" page="#" parameters="importFile.name" onclick="ognl:'remove(\''+importFile.name+'\')'+';return false' ">删除</a></td>
      </tr>
    <tr><td><span id=parentid jwcid="pid"/></td></tr>
    </table>
    </form>
     </div>
   </div>
  </td>
  <td class="contentTableRight"></td>
   </tr>
 </table>
 </div> 

 


</body>

 

 

 

</html>
 parentid是hidden,其值是通过也面传递参数,set近来的,在进入该也面之前,其值为 1,字符串类型的

结果 :我应该在alert(parentid);打印出来的结果应该是 1 但是却出现了 S1   加了个S  请帮忙分析下


 楼主更多新贴 :  
灌水专区jfreechart图形上的链接
灌水专区itemselection的问题
灌水专区ognl:devicegroup.id
灌水专区foreach的问题
  楼1  
等 级:下士
经 验:1683
性 别:帅哥
文 章:496
精 华:2
 干煸四季豆
发表时间:[2007-11-08 14:32:26] [向作者发站内短信] [复制链接告诉朋友]

关于这个S的问题,先前的帖子中也有涉及呀。

书上有关于介绍T如何传递对象的章节中有详细介绍,你看了有什么不清楚吗?

  楼2  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2007-11-08 14:34:39] [向作者发站内短信] [复制链接告诉朋友]

确实是把第9节好好看了 对象传递这里不是太清楚 我这里只是传递的字符串对象,按照书上的解释,这里是不应该出现S的 为什么会出现 难道是Float就会出现F?

  楼3  
等 级:下士
经 验:1683
性 别:帅哥
文 章:496
精 华:2
 干煸四季豆
发表时间:[2007-11-08 14:47:18] [向作者发站内短信] [复制链接告诉朋友]

呵呵,正是因为传递字符串,所以才会有S呀。Float的话,就什么都没有了。

T能够在页面跳转之间传递任意对象,或者将任意对象hidden到页面上,其实说白了,是一个很简单的原理。那就是将任意对象通过某种算法,转换为一个字符串,打印到客户端浏览器。因为我们,客户端浏览器只能解析字符串,比如JSP,传递的任何参数,都是字符串,然后我们自己再解析字符串获取需要的数据。而T,自动完成了这个工作。

把对象转换为字符串,比较容易,那么反过来,根据该字符串又解析出原来的对象,并且保留原对象的状态呢?当然比较困难,应为字符串是很单一的呀,只能在字符串的排列上做文章,加上特定的标识,以表征特定的对象。

当然,说起原理来,很简单。但是真正应该以何种算法来实现任意对象与字符串之间的转换呢?T有一系列专门的接口和工具类,我们可以通过hivemind重构它们,记得以前T4还是beta4的时候,对象转换工具类就BUG,那么那个时候,很多国外的用户就自己重构这些工具类。

书上,我有详细的示例,如何自己来重构这些接口,定义自己独特的算法,将特定的对象转换为字符串,或者根据字符串转换为特定的对象。

这里的S,其实很好理解,它只不过是T识别String对象的一个标识罢了。在以前的帖子中,你问我为什么用JS操作hidden域的时候,要在数据前面加个“S”,根本原因不过就是告诉T,这里的数据是个String对象,我提交的时候,你自动给我转换为String对象哈。

 

  楼4  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2007-11-08 14:51:13] [向作者发站内短信] [复制链接告诉朋友]

T在内部有自己的实现借口、方法等 自动将一些常用对象转换了。我现在在分析为什么做的类似的页面为什么没出现这样的问题  而这次出现了这样的问题 ,在想怎么把这个标示去掉

  楼5  
等 级:下士
经 验:1683
性 别:帅哥
文 章:496
精 华:2
 干煸四季豆
发表时间:[2007-11-08 15:35:45] [向作者发站内短信] [复制链接告诉朋友]

用JS字符串截取即可。

1 / 1 页
<< 1 >>
跳转
  快速回复
  帐号: 密码: 匿名不登陆
回复内容:  
验 证 码:
 
 
·VIP收费TS,您明智的选择!
·9800GT+19'液晶DIY仅售3500元
·双核特惠:1999、2999、3999
·什么是点金积分,如何查看自
·团购一期:三星R458-DS0G+高
  
贵州点集科技发展有限责任公司·点集贵州电脑网 版权所有©2006-2008
中华人民共和国增值电信业务经营许可证 黔B-20070010号
客服QQ: 93804809818866281927205370
电子邮件: deangi@vip.sina.com
技术支持: 0851-5109268