论坛

主页 » Liferay Portal » English » 3. Development

组合视图 统一视图 树状图
讨论主题 [ 上一个 | 下一个 ]
toggle
William Gosse
Overiding LoginAction
2011年12月6日 上午7:02
答复

William Gosse

等级: Expert

帖子: 277

加入日期: 2010年7月4日

最近的帖子

I want overide com.liferay.portlet.login.action.LoginAction as part of an extension project I have.

I'm not sure how to designate my custom class in the portal.properties file. Is this possible?

Actually I just wound up replacing the LoginAction with one that had the additional code that I needed, instead of extending it with a custom child class.
Amos Fong
RE: Overiding LoginAction
2011年12月6日 下午2:26
答复

Amos Fong

LIFERAY STAFF

等级: Liferay Legend

帖子: 1913

加入日期: 2008年10月7日

最近的帖子

Hi Bill,

You have two options. You can use ext and override just that struts action in struts-config-ext.xml.
http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/creating-an-ext-plugin

Or create an hook:
http://www.liferay.com/web/mika.koivisto/blog/-/blogs/7132115
Emilio Jose Lamas Fraga
RE: Overiding LoginAction
2012年6月7日 上午7:33
答复

Emilio Jose Lamas Fraga

等级: Junior Member

帖子: 58

加入日期: 2011年11月29日

最近的帖子

Hi Amos,

I don't know how to create a hook in the way Mika suggests for LoginAction; when I try to deploy, it throws a ClassNotFoundException because of the PortalAction that LoginAction extends.

I think this is because LoginAction belongs to portal-impl and it's not in the kernel package - like, for example, BaseStrutsAction -, so maybe in this case it's only possible to override LoginAction through EXT Plugin.

Am I Right? o I just making a mistake developing the hook?

Thanks!
Srikanth Konjarla
RE: Overiding LoginAction
2012年6月7日 上午7:39
答复

Srikanth Konjarla

等级: Junior Member

帖子: 51

加入日期: 2008年10月24日

最近的帖子

A sample to extend struts action might help.

http://svn.liferay.com/repos/public/plugins/trunk/hooks/sample-struts-action-hook/
Emilio Jose Lamas Fraga
RE: Overiding LoginAction
2012年6月7日 上午8:47
答复

Emilio Jose Lamas Fraga

等级: Junior Member

帖子: 58

加入日期: 2011年11月29日

最近的帖子

Hi Srikanth,

I've already try that example and it works fine. My problem is overriding the LoginAction class.

LoginAction extends com.liferay.portal.struts.PortletAction, and, when I try to deploy my ext plugin, it throws an exception because that class is not found.

Regards.
Matthew Stevenson
RE: Overiding LoginAction
2012年6月19日 上午8:00
答复

Matthew Stevenson

等级: New Member

帖子: 12

加入日期: 2012年5月17日

最近的帖子

Same issue experienced when trying to extend OpenIdAction in a hook:

1Caused by: java.lang.ClassNotFoundException: com.liferay.portlet.login.action.OpenIdAction
2    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
3    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
4    ... 31 more


Am using Liferay 6.1EE
Janus Godard
RE: Overiding LoginAction
2013年10月3日 上午7:39
答复

Janus Godard

等级: New Member

帖子: 17

加入日期: 2013年8月1日

最近的帖子

Emilio Jose Lamas Fraga:
Hi Srikanth,

I've already try that example and it works fine. My problem is overriding the LoginAction class.

LoginAction extends com.liferay.portal.struts.PortletAction, and, when I try to deploy my ext plugin, it throws an exception because that class is not found.

Regards.



Did you ever find a solution to that problem?

I'm having the same problem.

I'm working on adding captcha to the sign in page, as per:
https://www.liferay.com/community/forums/-/message_boards/message/11428960

The hook content is:
1<hook>
2    <custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>
3    <struts-action>
4        <struts-action-path>/login/login</struts-action-path>
5        <struts-action-impl>com.janus.portal.hook.login.captcha.CaptchaLoginAction</struts-action-impl>
6    </struts-action>
7</hook>

The class is CaptchaLoginAction extends com.liferay.portlet.login.action.LoginAction

The error is:
13:40:28,064 ERROR [pool-2-thread-56][HotDeployImpl:191] com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering hook for captcha-login-hook
[...]
Caused by: java.lang.ClassNotFoundException: com.liferay.portlet.login.action.LoginAction
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
Jose Jimenez
RE: Overiding LoginAction
2014年1月28日 下午2:54
答复

Jose Jimenez

LIFERAY STAFF

等级: Regular Member

帖子: 151

加入日期: 2012年8月22日

最近的帖子

Hi Janus,
The LoginAction is under the portal classloader, just in portal-impl that is unavalaible from the hook classloader: https://github.com/liferay/liferay-portal/blob/master/portal-impl/src/com/liferay/portlet/login/action/LoginAction.java
In a hook you only can add/replace actions but not including portal-impl dependencies.
I hope this helps you.
Jose