2

@Intercepted アノテーションが付いた MadvocAction があるため、インターセプターがどのように機能するかわかりませんが、インターセプタースタックにはアクセスしていないようです。

@MadvocAction("index")
public class IndexAction extends AppAction {

@PetiteInject
private TemperatureService temperatureService;

@Action
@InterceptedBy(AppInterceptorStack.class)
public void view() {
    // body here ....
}

およびインターセプター スタック:

package ro.videanuadrian.smartHome.web.interceptors;

import jodd.joy.madvoc.interceptor.DefaultInterceptorStack;
import jodd.madvoc.interceptor.ActionInterceptorStack;
import jodd.madvoc.interceptor.EchoInterceptor;

public class AppInterceptorStack extends ActionInterceptorStack {

public AppInterceptorStack() {

    super(
        AppAuthenticationInterceptor.class,
        EchoInterceptor.class,
        DefaultInterceptorStack.class
    );
}
}

何か案が ?

maadvoc config で更新: これは私の web.xml にあります:

  <filter>
    <filter-name>madvoc</filter-name>
    <filter-class>jodd.madvoc.MadvocServletFilter</filter-class>        
    <init-param>
        <param-name>madvoc.webapp</param-name>
        <param-value>ro.videanuadrian.smartHome.config.SmartHomeWebApplication</param-value>
    </init-param>
     <init-param>
        <param-name>madvoc.params</param-name>
        <param-value>/madvoc.props</param-value>
    </init-param>         
</filter>  

これが私のMadvoc it1sの初期化方法です:

public class SmartHomeWebApplication extends PetiteWebApplication {

final SmartHomeServiceCore serviceCore;

public SmartHomeWebApplication() {
    serviceCore = new SmartHomeServiceCore();
    serviceCore.start();     
}


/**
 * Adds configurator to Madvoc container and invokes configuration.
 */
@Override
public void configure(MadvocConfigurator configurator) {

    if (configurator instanceof AutomagicMadvocConfigurator){
        AutomagicMadvocConfigurator amc = (AutomagicMadvocConfigurator) configurator;
        amc.setExcludeAllEntries(true);
        amc.setIncludedEntries("ro.videanuadrian.*");

        registerComponent(amc);
        amc.configure();
    }
}  

また、madvoc.props:

 madvocConfig.defaultInterceptors=ro.videanuadrian.smartHome.web.interceptors.AppInterceptorStack

 madvocConfig.fileUploadFactory.maxFileSize=-1  

あなたの答えの後、私はコメントしmadvocConfig.defaultInterceptorsましたが、結果は同じでした。

4

1 に答える 1

0

ここであなたがしたことは完全に問題ないようです。ただし、注釈が機能しない理由が 1 つありますmadvoc-routes.txt

hereで説明されているように、アクションとインターセプターを定義する別の方法は、ルートでこの構成ファイルを使用することです。これが有効になっている場合、注釈を無視することがあります。

これが正しいかどうかを確認してください。そうである場合:

  • ルートファイルでインターセプターを定義するか
  • またはルートを削除して、注釈のみの構成に進みます。

これが当てはまらない場合は、特定の何か (バグ、つまり;) が見つかります。ただし、この機能は非常に基本的なものですが、そうであれば、気軽に github で問題を発生させてください :)

編集

あなたがしたことをすべて模倣しているように見えるwebappの例を作成しました。私のインターセプターが呼び出されます。ご確認いただけますでしょうか。

于 2016-03-26T18:57:17.563 に答える