我想知道是否可以在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函数显示或隐藏它们。
答案 0 :(得分:2)
JS在客户端上执行。 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);
}
它可能会收紧一点,但这是一般的想法。