2016-11-08 2 views
1

インターフェイスを実装するクラスDefaultScreenNameValidatorをオーバーライドしようとしています。このために、クラスをコピーして別のモジュールに入れました。私が行った変更の1つは、次のような注釈です。 -Lifestay 7のDefaultScreenNameValidatorクラスをオーバーライドする方法は?

@Component(
     property = { 
       "service.ranking:Integer=500" 
       } 

    ) 

これを使って成功したビルドを得ました。しかし、私はプロジェクトを展開しようとしたとき、私はjava.lang.NoClassDefFoundError: com/liferay/portal/kernel/security/auth/ScreenNameValidatorとしてエラーが発生しました。このエラーを根絶する方法を教えてください。 Thanx in advance ..

+1

あなたの 'build.gradle'と' bnd.bnd'を共有できますか?私たちにファイル? – brandizzi

答えて

1

ScreenNameValidatorインターフェイスも実装しているモジュールを作成してそこにカスタムロジックを定義する方がいいでしょうか?次に、単にLiferayにDefaultScreenNameValidatorの代わりにそのバリデータを使用するように伝えることができます。例えば

、最小限の実装:

import com.liferay.portal.kernel.security.auth.ScreenNameValidator; 

import org.osgi.service.component.annotations.Component; 

@Component(
    immediate = true, 
    service = ScreenNameValidator.class 
) 
public class CustomScreenNameValidator implements ScreenNameValidator { 

    @Override 
    public boolean validate(long companyId, String screenName) { 
     // Your custom logic 
    } 
} 
+0

あなたのアプローチで試しましたが、うまくいきません。 –

0

私はあなたができるブレード・CLIを使用してscreenNameValidatorを作ったあなたはbuild.gradleに

dependencies { 
    compile 'com.liferay.portal:com.liferay.portal.kernel:2.0.0' 

をポータル・カーネルへの依存性があることを確認しますプロジェクタを参照してくださいhttps://github.com/bruinen/liferay-blade-samples/tree/master/liferay-workspace/modules/blade.screenname.validator

import com.liferay.portal.kernel.security.auth.ScreenNameValidator; 
import org.osgi.service.component.annotations.Component; 

import java.util.Locale; 

@Component(
     immediate = true, 
     property = {"service.ranking:Integer=100"}, 
     service = ScreenNameValidator.class 
) 
public class CustomScreenNameValidator implements ScreenNameValidator { 

    @Override 
    public String getAUIValidatorJS() { 
     return "function(val) {return !(val.indexOf(\"admin\") !==-1)}"; 
    } 

    @Override 
    public String getDescription(Locale locale) { 
     return "The screenName contains reserved words"; 
    } 

    @Override 
    public boolean validate(long companyId, String screenName) { 
     return !screenName.contains("admin"); 
    } 
} 
+0

ur replyのためにおかげです..リンクで指定されたものと同じプロジェクトを作成しましたが効果はありません。 Plz help..thanxを事前に.. –

+0

service.rankが設定されているかどうかを確認できますか? –

関連する問題