2

2〜6個のパラメーターを受け取るjsfページがありますが、このURLの見栄えを良くしたいので、きれいな顔を使い始めました。2つのパラメーターのルールを作成すると、すべてが完全に機能しますが、2番目のルールを作成すると、ページも機能し、URLは希望どおりに正しくなりますが、Eclipseコンソールにエラーメッセージが表示されます。同じビューIDのルールを作成しようとしているからだと思います...それは可能ですか?

かなり構成:

  <url-mapping id="departamento">
   <pattern value="/#{codDep}/#{departamento} " />
   <view-id value="/departamento.jsf" />
  </url-mapping>

 <url-mapping parentId="departamento" id="sessao">
  <pattern value="/#{codSec}/#{secao}" />
  <view-id value="/departamento.jsf" />
 </url-mapping>

コンソールエラー:

java.lang.NumberFormatException: For input string: "javax.faces.resource"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at project.Controller.inicializar(Controller.java:82)

コントローラ方式:

 public void inicializar(ComponentSystemEvent event)
{
FacesContext context = FacesContext.getCurrentInstance();
if (!context.isPostback())
{

    departamento = new Departamento(Integer.parseInt(codigoDepartamento), descricaoDepartamento, null, null);
    }
  }

問題は、このパラメータ「javax.faces.resource」、場合によっては「css」を渡してはならないということです。これは、どこから来たのかさえわかりません。

4

1 に答える 1

1

これは、JSFリソースリクエスト(を含むjavax.faces.resource)がパターンの1つと一致するために発生すると思います。PrettyFacesはリクエストをインターセプトし、リクエストされたパスの一部がBeanに書き込まれます。

パターンを変更して、必要なURLのみに一致し、JSFリソース、CSS、画像ファイルなどには一致しないようにする必要があります。次のような一意の固定文字列プレフィックスを追加することができます/dep/

<url-mapping id="departamento">
  <pattern value="/dep/#{codDep}/#{departamento} " />
  <view-id value="/departamento.jsf" />
</url-mapping>

または、パスパラメータに許可される値を制限します。たとえば、が数値の場合codDep、次のように使用できます。

<url-mapping id="departamento">
  <pattern value="/#{ /[0-9]+/ codDep }/#{departamento} " />
  <view-id value="/departamento.jsf" />
</url-mapping>

詳細については、PrettyFacesドキュメントのこの部分を参照してください。

http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.pathparams.regex

于 2013-02-01T16:57:31.227 に答える