Struts2 ジャンプ後に CSS と JS が無効になる問題の解決策のアイデアと実装手順

Struts2 ジャンプ後に CSS と JS が無効になる問題の解決策のアイデアと実装手順
struts2 アクションの実行後にジャンプした jsp が表示されると、css が機能しません。問題が発生しているプロジェクトを例に挙げます。
アクションは次のとおりです。

コードをコピー
コードは次のとおりです。

<アクション名="listUser" クラス="listUserAction">
<結果>/users/userList.jsp</結果>
</アクション>

(: listUser の機能は、すべてのユーザーを検索し、それらを userList.jsp のユーザーの下に表示することです。spring が使用されているため、ここでの「listUserAction」は applicationContext.xml で設定された名前です)
userList.jsp の CSS 設定は次のとおりです

コードをコピー
コードは次のとおりです。

<link href="../css/style.css" rel="スタイルシート" type="text/css" />

(: ディレクトリ階層は次のようになります。WebRoot の下には users フォルダと css フォルダがあるため、users の下の jsp が style.css を呼び出す場合は、ルート ディレクトリに移動して css フォルダを見つける必要があります)
ただし、listUser から正常に実行した後に、プログラムが /users/userList.jsp にジャンプすると、/css/style.css が機能しません。アドレスバーに直接 jsp を表示した場合は正常に表示されます。
インターネットで見つかった方法では、 CSS に絶対パスを使用するように書かれています

コードをコピー
コードは次のとおりです。

<link href="http://blog.163.com/<%=request.getContextPath%>/css/style.css" rel="スタイルシート" type="text/css" />

しかし、これには明らかな欠点があり、それは携帯性が悪いということです。
結果を <result>userList.jsp</result> に変更し、jsp をルート ディレクトリに置くと、このような問題は発生しません。この時点で、問題の原因はほぼわかっています。つまり、アクションがルート ディレクトリにあります。プログラムを実行するときにアドレス バーから確認できます。つまり、名前空間がルート ディレクトリにあり、"../css/style.css" は当然見つかりません。
問題を理解すれば、解決策は簡単に見つかります。 listUser が設定されているパッケージを見つけて、namespace="/users" を追加します。今がその時だ

コードをコピー
コードは次のとおりです。

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts 構成 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<ストラット>
<パッケージ名="users" は、="struts-default" 名前空間="/users"> を拡張します。
......
<アクション名="listUser" クラス="listUserAction">
<結果>/users/userList.jsp</結果>
</アクション>
......
</パッケージ>
</strusts>

その後、サーバーを再起動すると、正常に表示されます。同時に、アドレスバーのアクションの前に「/users」が追加されていることもわかります。また、接続されたビデオにジャンプする場合も「/users/userList.jsp」になるため、一貫性が保たれ、問題が解決されます。

<<:  MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう

>>:  Intellij IDEA による Docker イメージの展開方法の手順の迅速な実装

推薦する

MySQL データ型 DECIMAL の詳細な分析

序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...

Tomcat Nginx Redis セッション共有プロセス図

1. 準備ミドルウェア: Tomcat、Redis、Nginx Jar パッケージ: commons...

docker を使用して minio と java sdk を構築するプロセスの詳細な説明

目次1minioはシンプル2 Dockerビルド minio 2.1 単一ノード2.2 マルチノード...

CentOS7にsshをインストールして設定する

1. openssh-serverをインストールする yum インストール -y openssl o...

HTMLファイル内の中国語の文字化けとブラウザでの表示の問題

今日も私のページが文字化けしていたので、インターネットで関連する問題を検索しました。この方法はかなり...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

VMware15 の CentOS7 インストールの詳細なプロセスとよくある問題 (画像とテキスト)

1. インストールパッケージの準備VMware-player-15.0.4-12990004、非商...

MYSQLデータベースの最適化段階を簡単に理解する

導入面接官がこんな質問をしたことはありませんか?データベースをどのように最適化しますか?では、この質...

メタタグにおける http-equiv 属性の使用の概要

metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うかもし...

Nginx の起動に失敗した場合のいくつかのエラー処理の詳細な説明

Nginx を Web サーバーとして使用する際に、次の問題が発生しました。 1. nginxの起動...

最初のReactページを作成する方法

目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...

Linux calコマンドの使用

1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...

Ubuntu 18.04 サーバーのパスワードを忘れたり改ざんされた場合にパスワードをリセットする方法

最近、サーバー上のアカウントが2つハッキングされ、パスワードが改ざんされました。幸い、まだ使えるアカ...

CentOSバージョンにDockerをインストールする際のエラーの解決方法

1. バージョン情報 # cat /etc/system-release CentOS Linux ...

PC/Pad/Phoneデバイスに自動的に適応するCSSウェブページレスポンシブレイアウト

序文最近は、PC、iPad、携帯電話、スマートウォッチ、スマートテレビなど、さまざまなデバイスが存在...