java - Liferay access DB table in theme: No bean named 'com.colors.themes.service.ColorLocalService' is defined -


i have theme project in liferay. have created new table called colors in liferay mysql database. colors table given below

enter image description here

actually have requirement particular css file should loaded in theme based on color table value status true , velocity template should shown below

#set ($mycolorservice = $servicelocator.findservice("com.colors.themes.service.colorlocalservice")) #set ($mycolor = $mycolorservice.fetchactivecolor()) #if ($mycolor == "blue")  <link href="$css_folder/themes/blue.css" rel="stylesheet" type="text/css"/> #elseif ($mycolor == "orange")  <link href="$css_folder/themes/orange.css" rel="stylesheet" type="text/css"/> #else  <link href="$css_folder/themes/green.css" rel="stylesheet" type="text/css"/> 

the following things somethings have done far

  • i have created service builder project (theme_service-portlet) colors table. service.xml shown below

    <?xml version="1.0" encoding="utf-8"?> <!doctype service-builder public "-//liferay//dtd service builder 6.2.0//en" "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd"> <service-builder package-path="com.colors.themes"> <author>user</author> <namespace>theme</namespace> <entity name="colors" local-service="true" remote-service="true"> <column name="colorid" type="long" primary="true" /> <column name="colorname" type="string" /> <column name="status" type="boolean" /> <finder return-type="collection" name="colors"> <finder-column name="status" /> </finder> </entity> </service-builder>

  • builded service , jar (theme_service-portlet-service.jar) generated under lib folder.

  • copy theme_service-portlet-service.jar , placed under liferay-portal-6.2-ce-ga2\tomcat-7.0.42\lib\extfolder.
  • in portal_normal.vm have used following code:
#set ($mycolorservice = $servicelocator.findservice("com.colors.themes.service.colorlocalservice")) #set ($mycolor = $mycolorservice.fetchactivecolor()) #if ($mycolor == "blue")  <link href="$css_folder/themes/blue.css" rel="stylesheet" type="text/css"/> #elseif ($mycolor == "orange")  <link href="$css_folder/themes/orange.css" rel="stylesheet" type="text/css"/> #else  <link href="$css_folder/themes/green.css" rel="stylesheet" type="text/css"/> 
  • restarted tomcat server

but getting following exception

04:44:55,896 error [http-bio-8080-exec-3][servicelocator:39] com.liferay.portal.kernel.bean.beanlocatorexception: org.springframework.beans.factory.nosuchbeandefinitionexception: no bean named 'com.colors.themes.service.colorlocalservice' defined com.liferay.portal.kernel.bean.beanlocatorexception: org.springframework.beans.factory.nosuchbeandefinitionexception: no bean named 'com.colors.themes.service.colorlocalservice' defined     @ com.liferay.portal.bean.beanlocatorimpl.locate(beanlocatorimpl.java:122)     @ com.liferay.portal.kernel.bean.portalbeanlocatorutil.locate(portalbeanlocatorutil.java:98)     @ com.liferay.portal.template.servicelocator.findservice(servicelocator.java:36)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606)     @ org.apache.velocity.util.introspection.uberspectimpl$velmethodimpl.doinvoke(uberspectimpl.java:389)     @ org.apache.velocity.util.introspection.uberspectimpl$velmethodimpl.invoke(uberspectimpl.java:378)     @ org.apache.velocity.runtime.parser.node.astmethod.execute(astmethod.java:270)     @ org.apache.velocity.runtime.parser.node.astreference.execute(astreference.java:262)     @ org.apache.velocity.runtime.parser.node.astreference.value(astreference.java:507)     @ org.apache.velocity.runtime.parser.node.astexpression.value(astexpression.java:71)     @ org.apache.velocity.runtime.parser.node.astsetdirective.render(astsetdirective.java:142)     @ org.apache.velocity.runtime.parser.node.simplenode.render(simplenode.java:336)     @ org.apache.velocity.template.merge(template.java:328) 

can please tell me solution this

first of have servicebuilder layer exposes data access layer; part good.

your code theme right. should using servicelocator find service, you're missing servlet context providing service. example, if plugin providing service in color-service-portlet.war, service locator call like:

    #set ($mycolorservice = $servicelocator.findservice("color-service-portlet", "com.colors.themes.service.colorlocalservice")) 

the exception you're seeing because using portal's form find portal service of course portal not exporting service, beanlocatorexception.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -