問題タブ [custom-tags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP-カスタムタグでテンプレート化-これはevalの合法的な使用ですか?
概要
2009年の終わりごろ、私はPHP / HTML用の簡単なテンプレートシステムを作成し、デザイナーがパンフレットウェアタイプのWebサイトに社内で使用できるようにしました。このシステムの目標は、PHPで処理されるカスタムタグを介して、純粋なHTMLでテンプレートを作成できるようにすることです。たとえば、テンプレート化されたページは次のようになります。
テンプレート自体は次のようになります。
PageタグとContent/Containerタグの他に、フロー制御、コレクションの反復処理、動的値の出力などのタグがコアに含まれています。フレームワークは、独自のセットを簡単に追加できるように設計されています。別のプレフィックスと名前空間で登録されたタグ。
PHPへのカスタムタグ
これらのカスタムタグをどのように解析しますか?HTMLファイルが整形式のXMLであるという保証はないため、XSLT/XPATHのようなソリューションは信頼できません。代わりに、正規表現を使用してプレフィックスが登録されているタグを検索し、それらをPHPコードに置き換えます。PHPコードはスタックベースの設計です...開始タグに遭遇すると、タグを表すオブジェクトがスタックにプッシュされて作成され、その「初期化関数」(存在する場合)が実行されます。登録された終了タグが検出されるたびに、最新のオブジェクトがスタックからポップされ、その「レンダリング機能」が実行されます。
したがって、フレームワークがテンプレートタグをPHPに置き換えた後、サンプルページは次のようになります(実際には少し醜いです)。
良い、悪い、そしてeval
では、新しく生成されたPHPコードを実行する方法は?ここでいくつかのオプションを考えることができます。最も簡単なのはeval
文字列を単純化することであり、それで十分に機能します。eval
ただし、プログラマーなら誰でも「evalは悪です、使用しないでください...」と言うので、ここで使用できるよりも適切なものはありますか?
一時ファイルまたはキャッシュファイルの使用、php://
出力ストリームの使用などを検討しましたが、私が見る限り、これらはに比べて実際の利点はありませんeval
。キャッシングは物事をスピードアップする可能性がありますが、実際には、このことに関するすべてのサイトはすでに非常に高速であるため、この時点で速度を最適化する必要はないと思います。
質問
このリストにあるもののそれぞれについて:それは良い考えですか?より良い代替案を考えられますか?
- 一般的なアイデア全体(html / phpのカスタムタグ)
- 直接処理するのではなく、タグをphpコードに変換する
- スタックベースのアプローチ
eval
(または同様の)の使用
読んでくれてありがとう、アドバイスをくれたTIA。:)
ajax - 汚いに設定できることを除いて、そのままのようなタグはありますか?
私が望むのは、次のようなものです。
out.println コードを ajax で再実行してほしい。ただし、そのフォームをダーティに設定すると、out.println は再実行されません。
カスタムタグを使用する以外に、これを回避する方法はありますか?
私が必要とするのは、次のようなタグです
myfaces または基本的な JSF にそのようなタグが既にありますか?
wordpress - ポストタクソノミーをワードプレスでアルファベット順に注文しますか?
私は次のように印刷する投稿にカスタム分類法を使用しています:
これは正常に機能しますが、用語を追加された順序で印刷します。アルファベット順に印刷する方法はありますか?the_terms関数では、順序パラメーターを渡すことができないため、別のパラメーターを使用する必要があると思いますが、まだ見つかりません。
前もって感謝します。
java - JSF 本体を持つ JSP カスタムタグ
サイト用に独自のテンプレート メカニズムを作成しようとしています。「TemplateInsert」と「TemplateFor」という名前の 2 つのカスタム タグを作成しました。1 つは次のように使用します。
「コンテンツ」内に JSF タグがない限り、これは完全に機能します。サーバーはそれらを解析していないようです。これを修正する方法を知っている人はいますか?
乾杯!
java - カスタムタグ付きのjspfファイルを含める
カスタムタグを介してjspfファイルをjspページに追加するにはどうすればよいですか?
タグサポートクラスでは、...を使用してjspfのコードを追加できます。
しかし、ファイルを追加するにはどうすればよいですか?
javascript - jqueryがカスタムタグを奇妙に解析する
次の問題が発生しています:http://jsfiddle.net/x55LD/1/
jQuery1.6を使用してカスタムタグを解析しようとしています。タグがタグ内にある場合を除いて、正しく機能しています<select>
。例えば:
<blah>
これは、2つのタグが存在するにもかかわらず、1つのメッセージのみをログに記録します。内の2番目の<blah>
タグは<select>
認識されません。なぜこれが起こっているのか誰かが知っていますか?
struts2 - 単純なタグと Struts 2.x の属性を参照する
次のような 4 つの属性を含む単純なタグを作成しています。
Struts 2 タグ内に、次のようにこれらの属性の 1 つを参照する必要があるポイントがあります。
渡されたメニュー名に基づいて OGNL 式でルックアップを行っていることがわかります。私が見るすべての例から、EL は属性 menuName を参照する一般的な方法ですが、Struts 2.x では EL は無効になっています。セキュリティ上の理由から。
参照する必要がある属性を参照する方法はありますか。以前のバージョンのjstlまたはstrutに行くことを含む解決策を考えたくありません。
java - 独自の JSP タグ本体の定義
最近、カスタム タグの作成に関する知識を習得することにしました。そして問題があります。
私の Web アプリでは、いくつかの JSTL タグを使用し、すべての JSP ページで同じコードを使用しています。
ご覧のとおり、この構造は正しいリソース バンドルを設定します。
したがって、このコードをまとめて、代わりに単一のタグを使用する可能性があるかどうかを知りたいです (別の方法があることはわかっています。このコードを個々の JSP ページに配置し、 <%@ include % を使用するだけです)。 > ディレクティブですが、タグを試してみたいです)?
私が理解しているように、何らかの方法でボディコンテンツを設定し(JSPからではなくタグクラス内に)、それを実行するコンテナを作成する必要がありますが、それに関する例は見つかりません。
私が今持っているもの:
tld:
そして私のタグ:
コンパイルはしますが、正しく何もしません。
java - JSP テーブルタグの並べ替え
私は、JSP を使用するレガシー システムに取り組んでいます。具体的には<display:table>
、ユーザーがデータの列をソートできるようにするタグがあります。ただし、デフォルトのタグを使用すると、アルファベット順、整数順、または double 順でのみソートされます。dataType
カスタム ロジックをコール スタックに挿入して、属性を使用して<display:column>
"$5,000,000.00" のような値を並べ替え、その前に "$5,100" がリストされないようにする方法を探しています。
ソートメカニズムで使用できる完全にテストされたコンパレータがあります。
私はどんなアイデアにもオープンです。これらは私が思いついたものです:
- を取る他のいくつかの実装を見つけました
comparator
。これを最初にテストして、現在持っているもので動作するかどうかを確認する予定です. ただし、このタイプの変更は、テストを伴う大きな体系的な変更です。 - と を再実装
TableTag
しColumnTag
ます。ただし、これらが一般的に何をしているのかを確認するための実際のソースが見つかりません。「オープンソース」指定については以上です。
java - JSPカスタムタグ属性タイプ整数
カスタムタグライブラリを作成したいのですが、ハンドラークラスに整数属性が必要です。
tldファイルには、次のコードがあります。
他の整数属性もありますが、この例は他の属性に関連しています。
ハンドラークラスは、今のところ次のように見えます。
tldファイルで属性タイプを指定していません。デフォルトでは文字列である必要があります。このようなエラーが発生しますが:
また、属性タイプを次のように変更し<type>java.lang.Integer</type>
、setterメソッドを次のように変更してみました。
そして、私は同じエラーを受け取ります。
セッターエラーが発生しないように、tldファイルの属性とハンドラークラスのセッターをどのように定義すればよいですか?