2016-03-22 7 views
1

いつものように私はすべてのことを正しく行っているようですが、私のajax呼び出しはエラーで失敗します "モード 'ビュー'、フェーズ 'Resource_PHASE' "。Spring MVC:ポートレット要求のためのハンドラが見つかりません:mode 'view'、フェーズ 'Resource_PHASE'

ハンドラのURLは "getAllFruit"です。これはjs ajax呼び出しから取得し、コントローラの実際のurl "getAllFruitURL"とfruit-resource-url.jsのマッパーファイルを使ってマッピングします。

他の同様のajaxメソッドもここに書かれていますが、この新しいもの以外はすべて正常に動作しています。私はそこに何かが足りないと思う。助けてください。スペルはハンドラにとって正しいものです。

コントローラクラス

@Controller 
@RequestMapping("VIEW") 
public class FruitCtrl 
{  
    @Autowired 
    private FruitAdapter fruitAdapter; 

    @ResourceMapping("getAllFruitURL") 
    public void getAllFruits(ResourceResponse response) throws IOException 
    {  
     // code for call to service  
    } 
} 

AJAX呼び出しが fruit.js

$function() 
{ 
    $.ajax({ 
     url:getAllFruit, 
     success:function(data){ 
     } 
    }); 
}); 

リソースが

果物・リソースのURL読み込まれ、そこからリソースファイル作られ、そこからJavascriptのクラス。 js

var getAllFruit = replaceResourceID("getAllFruitURL"); 
//<portlet-resourceURL id="RESOURCE_ID_PLACEHOLDER"/> 

答えて

0

私は幽霊を見つけました!

私はアプリケーションをデバッグモードで実行しています。このように、サーバーでのアプリケーションの自動再構築を避けるために、サーバー上の再発行にもかかわらず.classファイルが.warファイルで更新されることを許可しなかった "Build Automatically"オプションの選択を解除しました。

教訓:サーバーは、アプリケーションが構築されているかどうかは気にしません。それは仕事に固執し、サーバー上でアプリを公開し始めるでしょう。

ので、リソースのレンダリングでの作業中の世話をする必要がある2つだけの基本的なステップがあります。

  1. はAJAX呼び出しのurl属性に言及したハンドラのURL名は、実際のURLに対して正確に一致していますコントローラー内の "getAllFruitURL"(私の場合のようにリソースマッパーjsファイルを使用していて、fruits-resource-url.jsのマッパーファイルを使用している場合) これは既に注意しました! P.P.さまざまな理由から、一般的なものは時折揮発性であることがありますが、一般的な意味です:)
関連する問題