0

JavaScript 関数内または jQuery を使用して Struts2 タグ (例: ) を作成できるかどうかを知りたいです。

たとえば、私は試しました:

function createStrutsTag(){           

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

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

ただし、実際の意味を解析せずに、ラベル < s:textfield label="HELLO" /> を含む div を作成しただけです。

また、 struts2-jquery-plugin タグ(sj)も試してみましたが、これもクラッシュしました...それが可能かどうか、または本文の HTML 部分にこれらの要素を作成する必要があるかどうかを知りたいのですが、CSS スタイルによって隠されています。次に、アプリケーションの必要に応じて、JavaScript /jquery 関数を使用してそれらを表示または非表示にします。

4

1 に答える 1

2

JS はクライアント上で実行されます。JSP タグはサーバー上で評価されます。

以下に限定されない、いくつかのオプションがあります。

text タグの出力を JS 値として使用する

これを行うには、少なくとも 2 つの方法があります。

  • JS を JSP に入れる、または
  • JSP プロセッサを介して JS を評価する

JSP で一部のJS を評価し、外部 JS を呼び出す

たとえば、JSP で I18N ラベルなどのハッシュを作成し、それを JS ファイル (本来あるべき場所) にある JS 機能に渡すことができます。

text タグの出力を非表示の DOM 要素に格納する

JS を使用して取得し、現在の DOM を構築します。

これは間違いなく最もクリーンです。


jQuery を使用した「クリーンな」ソリューションの大まかな概要

基本については、このフィドルを参照してください。

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);
}

少しきつくなる可能性がありますが、それが一般的な考え方です。

于 2013-05-29T15:37:08.503 に答える