0

spring mvc で簡単なナビゲーションを作成しようとすると問題が発生します。私はナビゲーションコントローラを持っています:

@Controller
@RequestMapping("/secure")
public class NavigationController {

    @RequestMapping("/operation")
    public String processOperationPage() {
        //Some logic goes here
        return "corpus/operation";
    }

    @RequestMapping("/configuration")
    public String processConfigurationPage() {
        //Some logic goes here
        return "corpus/configuration";
    }

}

そして、そのコントローラーに到達するための私のリンクがあります:

<a href="secure/operation.htm">Operation</a>
<a href="secure/configuration.htm">Configuration</a>

リンクが初めてクリックされたときは、すべて問題ありません。ブラウザには、期待どおりの通常のパスが表示されます。例: http://localhost/obia/secure/configuration.htm。しかし、このページにいて、このページから operation.htm にアクセスしたい場合、操作リンクをクリックすると、パスは次のようになりますhttp://localhost/obia/secure/secure/operation.htm

secureが2回登場。どうすればこの問題を解決できますか?

4

4 に答える 4

5

あなたのリンクは相対的です。それらの前にスラッシュを追加すると修正されます。

于 2012-05-30T08:21:45.387 に答える
5

JSP を使用している場合は、代わりに JSTL を使用します。

<c:url value="/secure/operation.htm" />

JSP ファイルに taglib を含めることを忘れないでください。

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

JSTL を使用することで、アプリがhttp://host/http://host/myapp

最初のものは生成されhttp://host/secure/operation.htm、2 番目のものは自動的に生成さhttp://host/myapp/secure/operation.htmれます。

于 2012-05-30T08:33:45.653 に答える
2

URL を相対 URL から変更するか、現在のページに応じて相対 URL を動的に計算します。たとえば、URL をホストベースに変更できます。

 
       <a href="/obia/secure/operation.htm">操作</a>
       <a href="/obia/secure/configuration.htm">設定</a>
    

于 2012-05-30T08:26:32.837 に答える
0

上記のレスポンダーには、c:urlを使用して絶対URLを生成する際の正しい答えが1つあります。ただし、ファイアウォールの構成が原因で、JSTLがURLベースを正しく認識しない場合があります。その場合、相対URLを使用できますが、どこから始めているかを知る必要があります。つまり、ページobia / secure / operation.htmでは、URLは../secure/configuration.htm、または単にconfiguration.htmになります。ドットドットは、1レベル上を移動することを意味します。

于 2012-05-30T16:40:55.097 に答える