0

Primefaces と Spring を使用して JSF 2 でオンライン アプリケーションを構築しています。Pretty Faces を使用して、検索 URL をブックマーク可能にしたいと考えています。

これが私の pretty-config.xml です。

<?xml version="1.0" encoding="UTF-8"?>
<pretty-config xmlns="http://ocpsoft.org/prettyfaces/3.3.3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://ocpsoft.org/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.3.xsd">

    <url-mapping id="index">
        <pattern value="/" />
        <view-id value="/sites/public/template/index.xhtml" />
    </url-mapping>

    <url-mapping id="searchWithParams">
        <pattern value="/search/#{searchView.searchQuery}/#{searchView.searchTags}/#{searchView.searchOrder}" />
        <view-id value="/sites/public/product/productSearch.xhtml" />
    </url-mapping>

    <url-mapping id="searchWithoutParams">
        <pattern value="/search" />
        <view-id value="/sites/public/product/productSearch.xhtml" />
    </url-mapping>

</pretty-config>

注入したい Bean は次のとおりです。

@Component
@Scope("request")
public class SearchView {

    private String searchQuery = "";

    private String searchTags = "";

    private String searchOrder = "";


    public SearchView() {
        // void
    }

    public void navigate() {
        String url = "";
        try {
            url =  "/search" + 
                    "/" + URLEncoder.encode(searchQuery, "UTF-8") + 
                    "/" + URLEncoder.encode(searchTags, "UTF-8") + 
                    "/" + URLEncoder.encode(searchOrder, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            url = "/search";
        }

        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect(url);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    // Getters and Setters ...

}

「/search」のみが完全に正常に機能します。また、pretty-config.xml のマッピングの順序を変更して、他の 2 つのパラメーターにダミー値を使用し、1 つのパラメーターのみを使用してみました。私が試した別のことは、式「#{bean.param}」を「#{getParam : bean.param}」に変更することでした。Bean のスコープを変更しても役に立ちません。

Webページでは、アクションパラメーターとして「searchView.navigate」を持つprimefacesコマンドリンクを使用しています。

常に次のエラー メッセージが表示されます。

HTTP ステータス 404 - /search/a/b/c

タイプ ステータス レポート

メッセージ /search/a/b/c

説明 要求されたリソース (/search/a/b/c) は利用できません。

4

1 に答える 1