Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Struts 2标签的扩展会扰乱页面的呈现_Javascript_Jquery_Struts2 - Fatal编程技术网

Javascript Struts 2标签的扩展会扰乱页面的呈现

Javascript Struts 2标签的扩展会扰乱页面的呈现,javascript,jquery,struts2,Javascript,Jquery,Struts2,通常,当我使用struts 2标记时,页面的加载显然是不完整的,因为struts 2标记中的单引号或双引号字符会干扰javascript中的这些字符 我非常渴望工作的一个例子如下: var me = '<s:a href=\'http://www.google.com\'>Google Link</s:a>'; $('#appnSelect').html(me); var me='googlelink'; $('#appnSelect').html(me); 所以

通常,当我使用struts 2标记时,页面的加载显然是不完整的,因为struts 2标记中的单引号或双引号字符会干扰javascript中的这些字符

我非常渴望工作的一个例子如下:

 var me = '<s:a href=\'http://www.google.com\'>Google Link</s:a>';
 $('#appnSelect').html(me);
var me='googlelink';
$('#appnSelect').html(me);
所以我关心的是当单引号和双引号位于第1行右侧的me字符串中时。最终,我需要让
正常工作,但这个问题似乎是由许多标签引起的,如上面的示例。用一个
标签替换
标签,瞧,它工作了。但是,当
标记展开时,页面将无法完全加载


在我缺少的地方,有没有一个简单的解决办法?我尝试过的一件事是使用theme属性设置theme=“simple”,因为当输出渲染错误时,这有时会对我有所帮助。这在本例中不起作用。

我认为问题在于您转义了
标记中的单引号。根据我使用
的经验,我做了以下工作:

var url = "<s:url value='/someAction.action' />"
var url=“”
我相信同样的语法应该适用于


另外,查看JSP容器的错误日志,看看是否可以找到与该
标记相关的错误。这可以为问题提供一些额外的洞察力。

< P>从JavaScript字符串常量中间的标签中生成HTML总是会是一个丑陋的事务。除了引用字符外,您还可能获得换行符。严格地说,你不知道你会得到什么,你无法控制它

我想到的一件事是,您可以将标记放入标记为非JavaScript类型的伪
块中:

<script id='anAnchor' type='text/html'>
  <s:a href='http://www.google.com'>Google Link</s:a>
</script>

这是我的答案,这不是最好的答案,因为波蒂的回答为我指明了正确的方向。然而,上升的选票仍然受到赞赏:)

首先,需要未渲染的脚本块。我有2个,因为复选框将在显示哪一个之间切换:

     <script type="myType" id="abc">
   <s:select name="selectName" list="#list1" listValue="%{prefix + '-' + name}" theme="simple"/>         
 </script>
 <script type="myType" id="abc2">
   <s:select name="selectName" list="#list2" listValue="%{prefix + '-' + name}" theme="simple"/>         
 </script> 

我想最终让我绊倒的是,我试图通过jQuery函数强制使用s:select标记,而正如您在上面看到的,这并不是必需的。我可以正常地写s:select。

什么应该在很少思考的情况下工作:

<s:a id="google" style="display: none;" href="www.google.com">Google Link</s:a>
googlelink

现在,只需使用脚本中的id获取元素。如果你设立一个班级可能会更好。所有struts2标记都有id、样式和类属性。

实际上。。。除非你把单引号放在外面,把双引号放在里面,否则这个特殊的例子对我不起作用。我在查看源代码时看到的原因是,即使我使用单引号,内部引号也将作为双引号生成。我喜欢Pointy所说的:“永远都会是一个丑陋的行业”,对吧?问题是标记期望它们生成的东西将由HTML(或XHTML)解析器解析,而不是JavaScript解析器解析。这两个语法的元字符不一样;事实上,它们是互斥的(HTML属性中的引号除外)。谢谢你的建议。当我在jQuery行
alert($('#appnSelect').html()之后立即执行以下操作时我在警报中没有返回任何内容,表单中的区域也没有显示任何内容。如果出现问题(我无法调整),我将使用IE7。IE7应该没有问题-您确定“alert()”在源代码中的
标记之后,还是在jQuery“ready”处理程序中?注释中的“alert()”正在查找“appnSelect”元素,在我的示例中,我给
标记了id“anAnchor”。
alert($('#anAnchor').html())
显示了什么?我正在慢慢地到达那里。现在,我在页面底部有一个非常类似的jquery行
$(document).ready(function(){$('appnSelect').html($('anAnchor').html()))此appnSelect当前是一个深度嵌套在页面中的div。最后,就在我的
标记之后,我有了
googlelink
,这允许填充我的div。现在我要看看这是否适用于我的s:select标记。无论如何,我至少会在格林威治时间00:00投票支持你。除非Struts标记本身不喜欢它(我不知道他们会怎么做,尽管有些库坚持他们的表单元素标记只出现在表单内部;但是我不知道Struts),所以我想这应该没问题。对于任何复杂的事情,将主题设置为简单是一个好主意,你确切地知道你得到了什么。事实上,我喜欢在struts.xml中全局设置它。
<div id="innerRegion">
                                           </div>
<script type="text/javascript">
$(document).ready(function(){
   $('#innerRegion').html( $('#abc').html() )
});
   var buttonPressed = false; 

   $(window).load(
   function() 
   { 
     LocalInit();
   });

   function LocalInit() {     
   $('#myForm input[name=buttonValue]').change(
     function() 
     {
        buttonPressed = !buttonPressed;
        if (buttonPressed == true)
        {
           $('#innerRegion').html( $('#abc2').html() )
        } else
        {           
           $('#innerRegion').html( $('#abc').html() )
        }
        $('#dataId').href = document.location.href;            
     }
   );
  }
<s:a id="google" style="display: none;" href="www.google.com">Google Link</s:a>