在JavaScript函数中创建Struts2标记

时间:2013-05-29 15:17:29

标签: javascript struts2

我想知道是否可以在JavaScript函数内部或使用jQuery创建Struts2标记(例如)。

例如,我尝试过:

function createStrutsTag(){           

        var newElement;
        newElement= document.createElement("div");
        newElement.className = 'newer';
        newElement.innerHTML = '<s\:textfield label="HELLO" \/>';              

        newElement.css('visibility','visible'); }

然而,它只是创建了包含标签&lt;的div。 s:textfield label =“HELLO”/&gt;没有被解析为它的真正含义。

我也尝试使用 struts2-jquery-plugin标签(sj),它也崩溃了...所以我想知道它是否可以完成或者我应该在HTML部分创建这些元素通过CSS样式隐藏主体,然后使用应用程序需要的JavaScript / jquery函数显示或隐藏它们。

1 个答案:

答案 0 :(得分:2)

JS在客户端上执行。 JSP标记在服务器上进行评估。

您有多种选择,不限于:

将文本标记的输出用作JS值

至少有两种方法可以做到这一点:

  • 将JS放入JSP或
  • 通过JSP处理器评估您的JS

在JSP中评估部分 JS并调用外部JS

例如,您可以在JSP中创建I18N标签等的哈希值,并将其传递给JS文件中的JS功能(应该生活的地方)。

将文本标记的输出存储在隐藏的DOM元素中

使用JS检索它并像现在一样构建你的DOM。

这可以说是最干净的。


使用jQuery粗略概述“干净”解决方案

请参阅this fiddle了解基础知识。

<强> JSP:

<div id="hello" style="display: none;"><s:text label="HELLO" /></div>

<强> JS:

function createDiv() {
  var $div = $("<div className='newer'>").html($("#hello").html());
  $("#outputHere").html($div);
}

它可能会收紧一点,但这是一般的想法。