Monday, October 15, 2012
AUI Form Validation for Alpha and AlphaNumeric
<aui:input name="field1" >
<!-- Only allow alphabetical characters -->
<aui:validator name="alpha" />
</aui:input>
<aui:input name="field2" >
<!-- Only allow alphanumeric characters/digits -->
<aui:validator name="alphanum" />
</aui:input >
AUI Form Validation For file uploads with extension
<aui:input type="file" name="field2" >
<!--
For use with input type="file"
Only allow file uploads with this extension.
Specify multiple values either comma delimted 'jpg, png',
whitespace delimited 'jpg png', or pipe 'jpg|png' delimited.
Do not include the period before the extension
-->
<aui:validator name="acceptFiles">
'jpg, png'
</aui:validator>
</aui:input>
<!--
For use with input type="file"
Only allow file uploads with this extension.
Specify multiple values either comma delimted 'jpg, png',
whitespace delimited 'jpg png', or pipe 'jpg|png' delimited.
Do not include the period before the extension
-->
<aui:validator name="acceptFiles">
'jpg, png'
</aui:validator>
</aui:input>
AUI Form Validator Taglib
< aui:input name="field1" >
<!-- Example with multiple validators -->
<!-- Make the field required. If the field is empty, form will not submit -->
<aui:validator name="required" />
<!-- Only allow digits in the field -->
<aui:validator name="digits" />
<!-- Make sure field value is between 1 and 100 characters in length -->
<aui:validator name="range" >
[1,100]
</aui:validator >
</aui:input >
<!-- Example with multiple validators -->
<!-- Make the field required. If the field is empty, form will not submit -->
<aui:validator name="required" />
<!-- Only allow digits in the field -->
<aui:validator name="digits" />
<!-- Make sure field value is between 1 and 100 characters in length -->
<aui:validator name="range" >
[1,100]
</aui:validator >
</aui:input >
Labels:
Alloy UI
,
AUI Form Validation
,
Liferay form validation
Wednesday, July 25, 2012
liferay-ui:discussion with custom portlet (MVCPortlet)
liferay-ui:discussion with custom portlet(MVCPortlet / Liferay 6.1)
Add the below code in view.jsp
<%
WindowState windowState = null;
PortletMode portletMode = null;
PortletURL currentURLObj = null;
if (renderRequest != null) {
windowState = renderRequest.getWindowState();
portletMode = renderRequest.getPortletMode();
currentURLObj = PortletURLUtil.getCurrent(renderRequest, renderResponse);
} else if (resourceRequest != null) {
windowState = resourceRequest.getWindowState();
portletMode = resourceRequest.getPortletMode();
currentURLObj = PortletURLUtil.getCurrent(resourceRequest, resourceResponse);
}
String currentURL = currentURLObj.toString();
%>
Add the below invokeTaglibDiscussion method in YourPortletClass. java
public void invokeTaglibDiscussion(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
PortletConfig portletConfig = getPortletConfig();
PortalClassInvoker .invoke(true, "com.liferay.portlet.messageboards.action.EditDiscussionAction",
"processAction", new String[] {
"org.apache.struts.action.ActionMapping",
"org.apache.struts.action.ActionForm",
PortletConfig.class.getName(),
ActionRequest.class.getName(),
ActionResponse.class.getName()
}, null, null, portletConfig, actionRequest, actionResponse);
}
Add the below code in view.jsp
<%
WindowState windowState = null;
PortletMode portletMode = null;
PortletURL currentURLObj = null;
if (renderRequest != null) {
windowState = renderRequest.getWindowState();
portletMode = renderRequest.getPortletMode();
currentURLObj = PortletURLUtil.getCurrent(renderRequest, renderResponse);
} else if (resourceRequest != null) {
windowState = resourceRequest.getWindowState();
portletMode = resourceRequest.getPortletMode();
currentURLObj = PortletURLUtil.getCurrent(resourceRequest, resourceResponse);
}
String currentURL = currentURLObj.toString();
%>
Add the below invokeTaglibDiscussion method in YourPortletClass. java
public void invokeTaglibDiscussion(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
PortletConfig portletConfig = getPortletConfig();
PortalClassInvoker .invoke(true, "com.liferay.portlet.messageboards.action.EditDiscussionAction",
"processAction", new String[] {
"org.apache.struts.action.ActionMapping",
"org.apache.struts.action.ActionForm",
PortletConfig.class.getName(),
ActionRequest.class.getName(),
ActionResponse.class.getName()
}, null, null, portletConfig, actionRequest, actionResponse);
}
Labels:
liferay-taglib
,
liferay-ui:discussion
,
mvc-portlet
Monday, February 14, 2011
jQuery ajax with liferay 6.0.5
jQuery ajax with liferay 6.0.5
<portlet:actionURL var="ajaxURL" name="add" windowState="< %= LiferayWindowState.EXCLUSIVE.toString()%>" />
<form action="" name="fm" id="fm" method="post">
<a href="#" onclick="submitForm();">confirm < /a>
</form>
<script type="text/javascript" >
function submitForm(){
jQuery.ajax({
type: 'POST',
url: '<%= ajaxURL % >',
success: function(data){
jQuery('#p_p_id<portlet:namespace/ > .portlet-content').html(data);
}
});
}
</script >
Labels:
jquery-ajax
Alloy UI with Ajax
<portlet:actionURL var="ajaxURL" name="add" windowState="< %= LiferayWindowState.EXCLUSIVE.toString()%>" />
<form action="" name="fm" id="fm" method="post">
<a href="#" onclick="submitForm();">confirm < /a>
</form>
<aui:script use="aui-io-request,aui-node" >
Liferay.provide(
window,
'submitForm',
function() {
var A = AUI();
A.io.request('<%= ajaxURL % >', {
on: {
success: function() {
A.one('#p_p_id<portlet:namespace/ >.portlet-content').html(this.get('responseData'));
}
}
});
});
</aui:script >
Liferay Portal 5.2 Systems Development
<form action="" name="fm" id="fm" method="post">
<a href="#" onclick="submitForm();">confirm < /a>
</form>
<aui:script use="aui-io-request,aui-node" >
Liferay.provide(
window,
'submitForm',
function() {
var A = AUI();
A.io.request('<%= ajaxURL % >', {
on: {
success: function() {
A.one('#p_p_id<portlet:namespace/ >.portlet-content').html(this.get('responseData'));
}
}
});
});
</aui:script >
Liferay Portal 5.2 Systems Development
Labels:
alloy-ajax
Monday, January 31, 2011
Custom Sql in Liferay Plugin Portlet
Create a Custom Query in Plugin Portlet for Liferay Models(Liferay 6.0.x).
Step 1 :- Creating a library portlet
===========================
In the $PLUGINS_SDK/portlets(Windows)
create library-portlet "Library"
Step 2 :-
in portlet.xml
< portlet-class > com.liferay.util.bridges.mvc.MVCPortlet < /portlet-class >
replace with
< portlet-class > com.mpower.action.LibraryPortlet < /portlet-class >
Step 3 :-
Create service.xml under docroot/WEB-INF
< ?xml version="1.0" encoding="UTF-8"? >
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_0_0.dtd" >
< service-builder package-path="com.mpower" >
< author > Arun Kumar < /author >
< namespace > library < /namespace >
< entity name="Book" local-service="true" remote-service="false" >
< column name="bookId" type="long" primary="true" / >
< column name="name" type="String" / >
< column name="author" type="String" / >
< order by="asc" >
< order-column name="name" case-sensitive="false" / >
< /order >
< /entity >
< /service-builder >
Step 4 :-
a. Create a folder custom-sql under src
b. Create a file default.xml under src/custom-sql
< ?xml version="1.0"? >
< custom-sql >
< sql file="custom-sql/book.xml" / >
< /custom-sql >
c. Create a file book.xml, under src/custom-sql
< ?xml version="1.0"? >
< custom-sql >
< sql id="findBooks" >
< ![CDATA[
SELECT
*
FROM
library_book
WHERE
(library_book.name like ?)
]] >
< /sql>
< /custom-sql >
Step 5 :-
Create the file "BookFinderImpl.java" under service/persistence
public class BookFinderImpl extends BasePersistenceImpl implements
BookFinder {
}
Do ant build-service to generate necessary files.
Step 6 :-
Now write the logic to access the custom sql
public List findBooks(String name) throws SystemException {
Session session = null;
try {
session = openSession();
String sql = CustomSQLUtil.get(FIND_BOOKS);
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("Book", BookImpl.class);
QueryPos qPos = QueryPos.getInstance(query);
qPos.add(name);
return (List)query.list();
}catch (Exception e) {
}
return null;
}
public static String FIND_BOOKS = "findBooks";
*** Make the necessary imports.
import java.util.List;
import com.liferay.portal.kernel.dao.orm.QueryPos;
import com.liferay.portal.kernel.dao.orm.SQLQuery;
import com.liferay.portal.kernel.dao.orm.Session;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
import com.liferay.util.dao.orm.CustomSQLUtil;
Step 7 :-
Now write the method in BookLocalServiceImpl.java
public class BookLocalServiceImpl extends BookLocalServiceBaseImpl {
public List findBook(String name) throws PortalException,
SystemException, RemoteException {
return BookFinderUtil.findBooks("%" + name + "%");
}
run ant build-service , this will update the corresponding api with new method defined.
Step 8 :-
a. Create init.jsp under docroot and add the below content
< %@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" % >
< %@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" % >
< portlet:defineObjects / >
< %@ page import="com.mpower.service.BookLocalServiceUtil" % >
< %@ page import="com.mpower.model.Book" % >
< %@ page import="java.util.*" % >
b. Create result.jsp under docroot/
< %@page import="com.liferay.portal.kernel.util.Validator"% >
< %@ include file="init.jsp" % >
<% List books = (List) request.getAttribute("result");
if(Validator.isNull(books))books = new ArrayList();
%>
< liferay-ui:search-container delta="10" emptyResultsMessage="no-books-were-found" >
< liferay-ui:search-container-results
results="< %= books % >"
total="< %= books.size( )% >"
/>
< liferay-ui:search-container-row className="com.mpower.model.Book" modelVar="book" >
< liferay-ui:search-container-column-text
name="Book Title"
property="name"
/ >
< liferay-ui:search-container-column-text
name="Author"
property="author"
/ >
< /liferay-ui:search-container-row >
< liferay-ui:search-iterator / >
< /liferay-ui:search-container >
C. Update the view.jsp
< %@ include file="init.jsp" % >
< portlet:actionURL var="findURL" name="findBooks" / >
< form action="< %= findURL.toString() % >" name="fm" method="post" >
< label > Book Title < /label > < input name="title" value=""/ > < input type="submit" value="Search"/ >
< /form >
d. Create the portlet class LibraryPortlet.java under src/com/mpower/action
package com.mpower.action;
import java.io.IOException;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import com.mpower.model.Book;
import com.mpower.service.BookLocalServiceUtil;
public class LibraryPortlet extends MVCPortlet{
public void findBooks(ActionRequest actionRequest,
ActionResponse actionResponse) throws IOException, PortletException {
String name = ParamUtil.getString(actionRequest, "title");
try {
List books = BookLocalServiceUtil.findBook(name);
actionRequest.setAttribute("result", books);
actionResponse.setRenderParameter("jspPage", "/result.jsp");
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
}
}
run "ant deploy" and check the search functionality in Library portlet.
Step 1 :- Creating a library portlet
===========================
In the $PLUGINS_SDK/portlets(Windows)
create library-portlet "Library"
Step 2 :-
in portlet.xml
< portlet-class > com.liferay.util.bridges.mvc.MVCPortlet < /portlet-class >
replace with
< portlet-class > com.mpower.action.LibraryPortlet < /portlet-class >
Step 3 :-
Create service.xml under docroot/WEB-INF
< ?xml version="1.0" encoding="UTF-8"? >
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_0_0.dtd" >
< service-builder package-path="com.mpower" >
< author > Arun Kumar < /author >
< namespace > library < /namespace >
< entity name="Book" local-service="true" remote-service="false" >
< column name="bookId" type="long" primary="true" / >
< column name="name" type="String" / >
< column name="author" type="String" / >
< order by="asc" >
< order-column name="name" case-sensitive="false" / >
< /order >
< /entity >
< /service-builder >
Step 4 :-
a. Create a folder custom-sql under src
b. Create a file default.xml under src/custom-sql
< ?xml version="1.0"? >
< custom-sql >
< sql file="custom-sql/book.xml" / >
< /custom-sql >
c. Create a file book.xml, under src/custom-sql
< ?xml version="1.0"? >
< custom-sql >
< sql id="findBooks" >
< ![CDATA[
SELECT
*
FROM
library_book
WHERE
(library_book.name like ?)
]] >
< /sql>
< /custom-sql >
Step 5 :-
Create the file "BookFinderImpl.java" under service/persistence
public class BookFinderImpl extends BasePersistenceImpl implements
BookFinder {
}
Do ant build-service to generate necessary files.
Step 6 :-
Now write the logic to access the custom sql
public List
Session session = null;
try {
session = openSession();
String sql = CustomSQLUtil.get(FIND_BOOKS);
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("Book", BookImpl.class);
QueryPos qPos = QueryPos.getInstance(query);
qPos.add(name);
return (List)query.list();
}catch (Exception e) {
}
return null;
}
public static String FIND_BOOKS = "findBooks";
*** Make the necessary imports.
import java.util.List;
import com.liferay.portal.kernel.dao.orm.QueryPos;
import com.liferay.portal.kernel.dao.orm.SQLQuery;
import com.liferay.portal.kernel.dao.orm.Session;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
import com.liferay.util.dao.orm.CustomSQLUtil;
Step 7 :-
Now write the method in BookLocalServiceImpl.java
public class BookLocalServiceImpl extends BookLocalServiceBaseImpl {
public List
SystemException, RemoteException {
return BookFinderUtil.findBooks("%" + name + "%");
}
run ant build-service , this will update the corresponding api with new method defined.
Step 8 :-
a. Create init.jsp under docroot and add the below content
< %@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" % >
< %@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" % >
< portlet:defineObjects / >
< %@ page import="com.mpower.service.BookLocalServiceUtil" % >
< %@ page import="com.mpower.model.Book" % >
< %@ page import="java.util.*" % >
b. Create result.jsp under docroot/
< %@page import="com.liferay.portal.kernel.util.Validator"% >
< %@ include file="init.jsp" % >
<% List
if(Validator.isNull(books))books = new ArrayList
%>
< liferay-ui:search-container delta="10" emptyResultsMessage="no-books-were-found" >
< liferay-ui:search-container-results
results="< %= books % >"
total="< %= books.size( )% >"
/>
< liferay-ui:search-container-row className="com.mpower.model.Book" modelVar="book" >
< liferay-ui:search-container-column-text
name="Book Title"
property="name"
/ >
< liferay-ui:search-container-column-text
name="Author"
property="author"
/ >
< /liferay-ui:search-container-row >
< liferay-ui:search-iterator / >
< /liferay-ui:search-container >
C. Update the view.jsp
< %@ include file="init.jsp" % >
< portlet:actionURL var="findURL" name="findBooks" / >
< form action="< %= findURL.toString() % >" name="fm" method="post" >
< label > Book Title < /label > < input name="title" value=""/ > < input type="submit" value="Search"/ >
< /form >
d. Create the portlet class LibraryPortlet.java under src/com/mpower/action
package com.mpower.action;
import java.io.IOException;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import com.mpower.model.Book;
import com.mpower.service.BookLocalServiceUtil;
public class LibraryPortlet extends MVCPortlet{
public void findBooks(ActionRequest actionRequest,
ActionResponse actionResponse) throws IOException, PortletException {
String name = ParamUtil.getString(actionRequest, "title");
try {
List
actionRequest.setAttribute("result", books);
actionResponse.setRenderParameter("jspPage", "/result.jsp");
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
}
}
run "ant deploy" and check the search functionality in Library portlet.
Labels:
custom-sql
,
liferay
,
liferay6.0.5
Thursday, January 20, 2011
portlet render url
1. In JSP
2. In Java
Portlets in Action
<portlet:renderURL var="sampleURL"> |
<portlet:param name="jspPage" value="jsp file path"/> |
</portlet:renderURL> |
2. In Java
PortletURL sampleURL = renderResponse.createRenderURL(); |
sampleURL .setParameter("jspPage", " jsp file path "); |
Portlets in Action
Wednesday, January 12, 2011
Jasper Report with Liferay integration
JASPER REPORT
===============
1) step-1
~~~~~~~~~~~
package com.ext.portlet.<some>.service.impl;
public class <some>LocalServiceImpl extends <some>LocalServiceBaseImpl {
public void downloadReport() throws SystemException, PortalException{
UserLocalService service = UserLocalServiceUtil.getService();
DetachedCriteria dCriteria = DetachedCriteria.forClass(User.class);
dCriteria.add(Restrictions.eq("active", true));
DynamicQuery dynamicQuery = new DynamicQueryImpl(dCriteria);
List<user> userList = (List)service.dynamicQuery(dynamicQuery);
List<userandcontactinfo> userandContactInfoList = new ArrayList<userandcontactinfo>();
for(int i=0; i<userlist.size(); classloader="" contact);="" contact="" i++){="" user="" userandcontactinfo(user,="" userandcontactinfo="" userandcontactinfolist.add(userandcontactinfo);="" }="">LocalServiceImpl.class.getClassLoader();
JasperDesign jasperDesign;
JasperReport jasperReport;
JasperPrint jasperPrint;
try {
InputStream inputStream = classloader.getResourceAsStream("profiles.jrxml");
jasperDesign = JRXmlLoader.load(inputStream);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
userandContactInfoList);
jasperPrint = JasperFillManager.fillReport(
jasperReport, null, ds);
String dest ;
File file = new File("");
dest = file.getAbsolutePath();
JasperExportManager.exportReportToPdfFile(jasperPrint, dest+"/profiles.pdf");
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
------------------------------------------------------------------------------------
step-2
~~~~~~~~~~
package com.ext.portlet.<some>.action;
import java.io.Serializable;
import java.util.Date;
import com.ext.portlet.<some>.model.UserInfo;
import com.liferay.portal.model.Contact;
import com.liferay.portal.model.User;
public class UserandContactInfo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public UserandContactInfo(User user, Contact contact){
this.screenName = user.getScreenName();
this.firstName = user.getFirstName();
this.lastName = user.getLastName();
this.dob = user.getBirthday();
this.gender = (contact.getMale()?"Male":"Female");
this.emailAddress = user.getEmailAddress();
}
public String getEmailAddress() {
return emailAddress;
}
public String getFullName() {
return fullName;
}
public String getScreenName() {
return screenName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
private String emailAddress;
private String fullName;
private String screenName;
private String firstName;
private String lastName;
}
---------------------------------------------------------------------------------------------------------------------
step-3
~~~~~~~~~~~~
package com.ext.portlet.<some>.action;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ext.portlet.<some>.service.<some>LocalServiceUtil;
import com.liferay.portal.struts.PortletAction;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.servlet.ServletResponseUtil;
public class DownloadPdf extends PortletAction {
public ActionForward strutsExecute(
ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response)
throws Exception {
try {
<some>ServiceUtil.downloadReport();
InputStream is = new BufferedInputStream(
new FileInputStream("profiles.pdf"));
ServletResponseUtil.sendFile(response, "Profiles.pdf", is, "application/pdf");
return null;
}
catch (Exception e) {
PortalUtil.sendError(e, request, response);
return null;
}
}
}
--------------------------------------------------------------------------------------------------------------------
step-4
~~~~~~~~~~
jrxml file should be >>>>>>>>> ext-impl/src/profiles.jrxml
==============
<jasperreport bottommargin="20" columncount="1" columnspacing="0" columnwidth="535" issummarynewpage="false" istitlenewpage="false" leftmargin="30" name="profiles" orientation="Portrait" pageheight="842" pagewidth="595" printorder="Vertical" rightmargin="30" topmargin="20" whennodatatype="NoPages">
<property name="ireport.scriptlethandling" value="0">
<property name="ireport.encoding" value="UTF-8">
<import value="java.util.*">
<import value="net.sf.jasperreports.engine.*">
<import value="net.sf.jasperreports.engine.data.*">
<field class="java.lang.String" name="emailAddress">
<field class="java.lang.String" name="fullName">
<field class="java.lang.String" name="screenName">
<field class="java.lang.String" name="firstName">
<field class="java.lang.String" name="lastName">
<background>
<band height="0" issplitallowed="true">
</band>
</background>
< title > <br /> <band height="12" isSplitAllowed="true" ><br /> </band><br />
<pageheader>
<band height="19" issplitallowed="true">
<textfield evaluationtime="Now" hyperlinktarget="Self" hyperlinktype="None" isblankwhennull="false" isstretchwithoverflow="false">
<reportelement forecolor="red" height="18" key="textField" width="100" x="404" y="1">
<box></box>
<textelement>
</textelement>
<textfieldexpression class="java.lang.Integer"></textfieldexpression>
</reportelement>
</textfield>
</band>
<columnheader>
<band height="0" issplitallowed="true">
</band>
</columnheader>
<detail>
<band height="783" issplitallowed="true">
<textfield evaluationtime="Now" hyperlinktarget="Self" hyperlinktype="None" isblankwhennull="false" isstretchwithoverflow="false">
<reportelement height="18" key="textField" width="205" x="133" y="136">
<box></box>
<textelement>
</textelement>
<textfieldexpression class="java.lang.String"></textfieldexpression>
</reportelement>
<textfield evaluationtime="Now" hyperlinktarget="Self" hyperlinktype="None" isblankwhennull="false" isstretchwithoverflow="false">
<reportelement height="18" key="textField" width="271" x="133" y="37">
<box></box>
<textelement>
</textelement>
<textfieldexpression class="java.lang.String"></textfieldexpression></reportelement>
-------------
-----------
------------
---------
</textfield>
</textfield>
<columnfooter>
<band height="0" issplitallowed="true">
</band>
</columnfooter>
<pagefooter>
<band height="0" issplitallowed="true">
</band>
</pagefooter>
<lastpagefooter>
<band height="16" issplitallowed="true">
</band>
</lastpagefooter>
<summary>
<band height="15" issplitallowed="true">
</band>
</summary>
</band>
--------------------------------------------------------------------------------------------------------------------
step-5
~~~~~~~~~
Required jars
a) jasperreports-3.0.0.jar >>>>>>>>tomcat/webapps/ROOT/WEB-INF/lib
b) itext-1.3.1.jar >>>>>>> tomcat/webapps/ROOT/WEB-INF/lib
JasperReports 3.5 for Java Developers
===============
1) step-1
~~~~~~~~~~~
package com.ext.portlet.<some>.service.impl;
public class <some>LocalServiceImpl extends <some>LocalServiceBaseImpl {
public void downloadReport() throws SystemException, PortalException{
UserLocalService service = UserLocalServiceUtil.getService();
DetachedCriteria dCriteria = DetachedCriteria.forClass(User.class);
dCriteria.add(Restrictions.eq("active", true));
DynamicQuery dynamicQuery = new DynamicQueryImpl(dCriteria);
List<user> userList = (List)service.dynamicQuery(dynamicQuery);
List<userandcontactinfo> userandContactInfoList = new ArrayList<userandcontactinfo>();
for(int i=0; i<userlist.size(); classloader="" contact);="" contact="" i++){="" user="" userandcontactinfo(user,="" userandcontactinfo="" userandcontactinfolist.add(userandcontactinfo);="" }="">LocalServiceImpl.class.getClassLoader();
JasperDesign jasperDesign;
JasperReport jasperReport;
JasperPrint jasperPrint;
try {
InputStream inputStream = classloader.getResourceAsStream("profiles.jrxml");
jasperDesign = JRXmlLoader.load(inputStream);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
userandContactInfoList);
jasperPrint = JasperFillManager.fillReport(
jasperReport, null, ds);
String dest ;
File file = new File("");
dest = file.getAbsolutePath();
JasperExportManager.exportReportToPdfFile(jasperPrint, dest+"/profiles.pdf");
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
------------------------------------------------------------------------------------
step-2
~~~~~~~~~~
package com.ext.portlet.<some>.action;
import java.io.Serializable;
import java.util.Date;
import com.ext.portlet.<some>.model.UserInfo;
import com.liferay.portal.model.Contact;
import com.liferay.portal.model.User;
public class UserandContactInfo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public UserandContactInfo(User user, Contact contact){
this.screenName = user.getScreenName();
this.firstName = user.getFirstName();
this.lastName = user.getLastName();
this.dob = user.getBirthday();
this.gender = (contact.getMale()?"Male":"Female");
this.emailAddress = user.getEmailAddress();
}
public String getEmailAddress() {
return emailAddress;
}
public String getFullName() {
return fullName;
}
public String getScreenName() {
return screenName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
private String emailAddress;
private String fullName;
private String screenName;
private String firstName;
private String lastName;
}
---------------------------------------------------------------------------------------------------------------------
step-3
~~~~~~~~~~~~
package com.ext.portlet.<some>.action;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ext.portlet.<some>.service.<some>LocalServiceUtil;
import com.liferay.portal.struts.PortletAction;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.servlet.ServletResponseUtil;
public class DownloadPdf extends PortletAction {
public ActionForward strutsExecute(
ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response)
throws Exception {
try {
<some>ServiceUtil.downloadReport();
InputStream is = new BufferedInputStream(
new FileInputStream("profiles.pdf"));
ServletResponseUtil.sendFile(response, "Profiles.pdf", is, "application/pdf");
return null;
}
catch (Exception e) {
PortalUtil.sendError(e, request, response);
return null;
}
}
}
--------------------------------------------------------------------------------------------------------------------
step-4
~~~~~~~~~~
jrxml file should be >>>>>>>>> ext-impl/src/profiles.jrxml
==============
<jasperreport bottommargin="20" columncount="1" columnspacing="0" columnwidth="535" issummarynewpage="false" istitlenewpage="false" leftmargin="30" name="profiles" orientation="Portrait" pageheight="842" pagewidth="595" printorder="Vertical" rightmargin="30" topmargin="20" whennodatatype="NoPages">
<property name="ireport.scriptlethandling" value="0">
<property name="ireport.encoding" value="UTF-8">
<import value="java.util.*">
<import value="net.sf.jasperreports.engine.*">
<import value="net.sf.jasperreports.engine.data.*">
<field class="java.lang.String" name="emailAddress">
<field class="java.lang.String" name="fullName">
<field class="java.lang.String" name="screenName">
<field class="java.lang.String" name="firstName">
<field class="java.lang.String" name="lastName">
<background>
<band height="0" issplitallowed="true">
</band>
</background>
< title > <br /> <band height="12" isSplitAllowed="true" ><br /> </band><br />
<pageheader>
<band height="19" issplitallowed="true">
<textfield evaluationtime="Now" hyperlinktarget="Self" hyperlinktype="None" isblankwhennull="false" isstretchwithoverflow="false">
<reportelement forecolor="red" height="18" key="textField" width="100" x="404" y="1">
<box></box>
<textelement>
</textelement>
<textfieldexpression class="java.lang.Integer"></textfieldexpression>
</reportelement>
</textfield>
</band>
<columnheader>
<band height="0" issplitallowed="true">
</band>
</columnheader>
<detail>
<band height="783" issplitallowed="true">
<textfield evaluationtime="Now" hyperlinktarget="Self" hyperlinktype="None" isblankwhennull="false" isstretchwithoverflow="false">
<reportelement height="18" key="textField" width="205" x="133" y="136">
<box></box>
<textelement>
</textelement>
<textfieldexpression class="java.lang.String"></textfieldexpression>
</reportelement>
<textfield evaluationtime="Now" hyperlinktarget="Self" hyperlinktype="None" isblankwhennull="false" isstretchwithoverflow="false">
<reportelement height="18" key="textField" width="271" x="133" y="37">
<box></box>
<textelement>
</textelement>
<textfieldexpression class="java.lang.String"></textfieldexpression></reportelement>
-------------
-----------
------------
---------
</textfield>
</textfield>
<columnfooter>
<band height="0" issplitallowed="true">
</band>
</columnfooter>
<pagefooter>
<band height="0" issplitallowed="true">
</band>
</pagefooter>
<lastpagefooter>
<band height="16" issplitallowed="true">
</band>
</lastpagefooter>
<summary>
<band height="15" issplitallowed="true">
</band>
</summary>
</band>
--------------------------------------------------------------------------------------------------------------------
step-5
~~~~~~~~~
Required jars
a) jasperreports-3.0.0.jar >>>>>>>>tomcat/webapps/ROOT/WEB-INF/lib
b) itext-1.3.1.jar >>>>>>> tomcat/webapps/ROOT/WEB-INF/lib
JasperReports 3.5 for Java Developers
Labels:
jasperReport
,
liferay
,
liferay-jasper-report
Liferay Alloy Popup
In Liferay's previous versions, we are using Liferay.Popup for popup window using jQuery.
As Liferay is moved to Alloy UI , Here is the code for Alloy Popup:
To Display some Html content in Alloy Popup:
< aui:script >
function callPopup(){
AUI().ready('aui-dialog', 'aui-overlay-manager', 'dd-constrain', function(A) {
var dialog = new A.Dialog({
title: 'DISPLAY CONTENT',
centered: true,
modal: true,
width: 500,
height: 400,
bodyContent: "This is testing content inside the popup"
}).render();
});
}
</aui:script >
Passing URL : Passing URL into Alloy Popup
<aui:script>
Liferay.provide(window,'<portlet:namespace />callPopup',
function(url1) {
var A = AUI();
var data = {};
var dialog = new A.Dialog(
{
centered: true,
destroyOnClose: true,
modal: true,
title: Liferay.Language.get('Display-Content'),
width: 600
}
).render();
dialog.plug(
A.Plugin.IO,
{
data: data,
uri: url1
}
);
},
['aui-dialog', 'aui-io']
);
</aui:script >
Liferay in Action: The Official Guide to Liferay Portal Development
As Liferay is moved to Alloy UI , Here is the code for Alloy Popup:
To Display some Html content in Alloy Popup:
< aui:script >
function callPopup(){
AUI().ready('aui-dialog', 'aui-overlay-manager', 'dd-constrain', function(A) {
var dialog = new A.Dialog({
title: 'DISPLAY CONTENT',
centered: true,
modal: true,
width: 500,
height: 400,
bodyContent: "This is testing content inside the popup"
}).render();
});
}
</aui:script >
Passing URL : Passing URL into Alloy Popup
<aui:script>
Liferay.provide(window,'<portlet:namespace />callPopup',
function(url1) {
var A = AUI();
var data = {};
var dialog = new A.Dialog(
{
centered: true,
destroyOnClose: true,
modal: true,
title: Liferay.Language.get('Display-Content'),
width: 600
}
).render();
dialog.plug(
A.Plugin.IO,
{
data: data,
uri: url1
}
);
},
['aui-dialog', 'aui-io']
);
</aui:script >
Liferay in Action: The Official Guide to Liferay Portal Development
Labels:
alloy-popup
,
liferay
,
liferay-alloy-popup
Subscribe to:
Posts
(
Atom
)