Archive | October 2012

SyntaxError: unterminated string literal throws by Javascript in Browser.

SyntaxError: unterminated string literal throws by Javascript in Browser.

possible Cause: special character or line break(\r\n or \n) in processing String not supported by browser.

possible Solution: Escape the String before render HTML.

eg. org.apache.commons.lang.StringEscapeUtils.escapeJavaScript(<String>);

‘report design not valid, field not found’ while generating Group Report using Dynamic Jasper.

While generating Group report using dynamicJasper 3.2.2 , it throw below error:

Report design not valid :
1. Field not found : customers_contactLastName
2. Field not found : customers_contactLastName

Cause:

Group criteria column or group variables not define in DRB(Dynamic Jasper builder) column list.

Solution:

Add Group criteria column and all group variables in DRB column list.

eg.

FastReportBuilder drb = new FastReportBuilder();
AbstractColumn critieriaCol = ColumnBuilder.getNew();
AbstractColumn display1 = ColumnBuilder.getNew();
drb.addColumn(display1);
drb.addColumn(criteriaCol);
GroupBuilder gb = new GroupBuilder(“group1”);
gb.setCriteriaColumn((PropertyColumn) criteriaCol);
DJGroup djGroup = gb.build();
drb.addGroup(djGroup);

How to conditional process action in JSF?

If validation failed, it should have a way to decide what action to do:

@Common JSF

<a4j:commandButton ... oncomplete="if (#{!facesContext.validationFailed}) $('#dialog_id').dialog('close')" />

@Primefaces

<p:commandButton value="submit" oncomplete="if (args &amp;&amp; !args.validationFailed) dialog.show()" process="@this"/>

How to align a component to right corner of JSF page?

solution:

1. include component in html table tag with align to right:

<table valign=”top” width=”100%”>
<tr>
<td align=”right”> <place component here> </td>
</tr>
</table>
2. use style in jsf component

put style=”float: right;” in component

eg. <h:outputText value=”test” style=”float: right;”/>

How to sort java collection?

Sort by specific element:

case1: sort by file name

Collection => List<File> fileList = new ArrayList<File>();

(ref: number of IO comparator can be used in apache commons)

import org.apache.commons.io.comparator.NameFileComparator;

Collections.sort(fileList, NameFileComparator.NAME_COMPARATOR);

ref:

http://www.java2s.com/Code/Java/Apache-Common/ComparatorExampleForUserDefinedClass.htm

why primefaces’ datatable column not sortable?

Just found column in primefaces datatable not sortable:

<p:dataTable id=”table_template” var=”templateVar” value=”#{manageTemplateCtl.templateList}”
rowKey=”#{templateVar.id}” rows=”20″
paginator=”true”
paginatorTemplate=”{CurrentPageReport} {FirstPageLink}
{PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}”>

<p:column sortBy=”#{templateVar.name}” style=”width:300px”>
<f:facet name=”header”>
<h:outputText value=”#{messages.label_name}”/>
</f:facet>
<h:outputText value=”#{templateVar.name}”/>
</p:column>

<p:column headerText=”#{messages.label_description}” style=”width:350px”>
<h:outputText value=”#{templateVar.description}”/>
</p:column>
<p:column headerText=”#{messages.label_templateMode}” sortBy=”#{templateVar.mode}”
style=”width:120px”>
<h:outputText value=”#{templateVar.mode}”/>
</p:column>

</p:dataTable>

Cause:

Primefaces’ datatable sorting not work, if value was populated in get value method eg.manageTemplateCtl.templateList

Solution:

Avoid populate list value in get method, but Initiate the templateList in controller, and return the templateList initiated in getTemplateList()