2017-02-22 2 views
0

Spring MVCフレームワークで作業中です。マッピングコントローラにアノテーションを使用しています。各コントローラクラスに共通のマッピングワードと共通メソッドを使用しています。プレフィックスを注釈付き値に追加し、オーバーライドされたメソッドで別の注釈付き値として使用する

example: 
@RequestMapping(value = "/employee_job/list") 
@RequestMapping(value = "/employee_job/list_json") 
@RequestMapping(value = "/employee_job/add") 
@RequestMapping(value = "/employee_job/update") 
@RequestMapping(value = "/employee_job/delete") 

これはemployee_jobコントローラです。 私は部分的なマッピングでインターフェイスを作成しており、実装者はその値にプレフィックスを追加します。ここ は、インタフェースのコードです:

@Controller 
public interface CommonController { 

    @RequestMapping(value = "/list") 
    public String showList(Model model); 
    @RequestMapping(value = "/list_json") 
    public String showListJson(Model model); 
    @RequestMapping(value = "/add") 
    public String add(Model model); 
    @RequestMapping(value = "/update") 
    public String update(Model model); 
    @RequestMapping(value = "/delete") 
    public String delete(Model model);  
} 

私はこのようにそれを実装する:

public class EmployeeJobController implements CommonController{ 

    private static final String prefix = "/employee_job"; 

     @Override 
     @RequestMapping(value = prefix+value) 
     public String showList(Model model){ 
      //some code here 
     } 

     @Override 
     @RequestMapping(value = prefix+value) 
     public String showListJson(Model model){ 
      //some code here 
     } 

     @Override 
     @RequestMapping(value = prefix+value) 
     public String add(Model model){ 
      //some code here 
     } 

     @Override 
     @RequestMapping(value = prefix+value) 
     public String update(Model model){ 
      //some code here 
     } 

     @Override 
     @RequestMapping(value = prefix+value) 
     public String delete(Model model){ 
      //some code here 
     } 
    } 

しかし、私はエラー"value cannot be resolved to a variable"を取得しています。

これを行う正しい方法は何でしょうか?

ありがとうございました。

答えて

0

ここで、valueを定義しますか?

注釈ではstatic final文字列しか使用できません。 prefix+"/add"のような何かがよりよい解決策が

@RequestMapping("/employee_job") 
public class EmployeeJobController { 
    @RequestMapping("/add") 
    public String add(...) {...} 
    ... 
} 
-1

だろう

を動作するはずCommonControllerインターフェイス内の変数を宣言します。 EmployeeJobControllerクラスのこれらの変数を使用します。

@ControllerパブリックインターフェースCommonController {

public static final String showListStr="/list"; 

@RequestMapping(value = "/list") 
public String showList(Model model); 
@RequestMapping(value = "/list_json") 
public String showListJson(Model model); 
@RequestMapping(value = "/add") 
public String add(Model model); 
@RequestMapping(value = "/update") 
public String update(Model model); 
@RequestMapping(value = "/delete") 
public String delete(Model model);  

}

と子クラスの使用では、この変数

パブリッククラスEmployeeJobControllerがCommonController {

private static final String prefix = "/employee_job"; 

    @Override 
    @RequestMapping(value = prefix+showListStr) 
    public String showList(Model model){ 
     //some code here 
    } 

    @Override 
    @RequestMapping(value = prefix+value) 
    public String showListJson(Model model){ 
     //some code here 
    } 

    @Override 
    @RequestMapping(value = prefix+value) 
    public String add(Model model){ 
     //some code here 
    } 

    @Override 
    @RequestMapping(value = prefix+value) 
    public String update(Model model){ 
     //some code here 
    } 

    @Override 
    @RequestMapping(value = prefix+value) 
    public String delete(Model model){ 
     //some code here 
    } 
} 
を実装
関連する問題