


Sitemesh3 DecoratorSelector を拡張して、リクエスト パラメーターに基づいて装飾されたテンプレート ページを呼び出す実装を実装します_html/css_WEB-ITnose
拡張機能の入り口 フィルターの実装:
package lab.s2jh.core.web.sitemesh;import org.sitemesh.DecoratorSelector;import org.sitemesh.builder.SiteMeshFilterBuilder;import org.sitemesh.config.ConfigurableSiteMeshFilter;import org.sitemesh.webapp.WebAppContext;/** * 扩展实现注入基于request参数decorator值进行动态定位装饰器的选择器 */public class ParamConfigurableSiteMeshFilter extends ConfigurableSiteMeshFilter { protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) { //获取原有默认配置装饰选择器 DecoratorSelector<WebAppContext> defaultDecoratorSelector = builder.getDecoratorSelector(); //赋给自定义装饰选择器,则自定义规则未匹配时调用默认选择器获取 builder.setCustomDecoratorSelector(new ParamDecoratorSelector(defaultDecoratorSelector)); }}
カスタム装飾セレクターの実装:
package lab.s2jh.core.web.sitemesh;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang3.StringUtils;import org.sitemesh.DecoratorSelector;import org.sitemesh.content.Content;import org.sitemesh.webapp.WebAppContext;/** * 基于request参数decorator值进行动态定位装饰器的选择器 * 如果decorator参数有值,则返回"/WEB-INF/views/layouts/" + decorator + ".jsp"作为目标装饰模板页面 */public class ParamDecoratorSelector implements DecoratorSelector<WebAppContext> { private DecoratorSelector<WebAppContext> defaultDecoratorSelector; public ParamDecoratorSelector(DecoratorSelector<WebAppContext> defaultDecoratorSelector) { this.defaultDecoratorSelector = defaultDecoratorSelector; } public String[] selectDecoratorPaths(Content content, WebAppContext context) throws IOException { // build decorator based on the request HttpServletRequest request = context.getRequest(); String decorator = request.getParameter("decorator"); if (StringUtils.isNotBlank(decorator)) { //按照参数值返回对应路径下面的jsp装饰模板页码 return new String[] { "/WEB-INF/views/layouts/" + decorator + ".jsp" }; } // Otherwise, fallback to the standard configuration return defaultDecoratorSelector.selectDecoratorPaths(content, context); }}
web.xml 構成の調整:
<filter> <filter-name>sitemeshFilter</filter-name> <filter-class>lab.s2jh.core.web.sitemesh.ParamConfigurableSiteMeshFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemeshFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。
