Hi,
I am trying the export feature of JMesa 3.0.4 with Struts2
Please find below my code
Struts.xml
<action name="jmesaAction" class="com.sherwin.omps.opm.action.JmesaAction">
<result>/jsp/opm/productEnquiry/prodEnqSearchResults2.jsp
</result>
</action>
Action class
public class JmesaAction extends BaseMpsAction{
private String id;
private ArrayList<ProductEnquiryDTO> enquiryList;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public ArrayList<ProductEnquiryDTO> getEnquiryList() {
return (ArrayList<ProductEnquiryDTO>) enquiryList;
}
public void setEnquiryList(List<ProductEnquiryDTO> enquiryList) {
this.enquiryList = (ArrayList<ProductEnquiryDTO>) enquiryList;
}
public String execute(HttpServletRequest request, HttpServletResponse response){
if (validateSession() != null) {
return ERROR;
}
ArrayList<ProductEnquiryDTO> enquiryList = (ArrayList<ProductEnquiryDTO>) getDwrSession().getAttribute(ENQUIRY_LIST);
TableModel tableModel = new TableModel("enquiryTbl",request,response);
tableModel.setItems(enquiryList);
tableModel.setExportTypes(ExportType.CSV, ExportType.EXCEL, ExportType.PDF);
Table table = new Table().caption("Product Inquiry");
Row row = new Row();
table.setRow(row);
Column pid = new Column("pcPidPk").title("PID");
row.addColumn(pid);
Column salesNumber = new Column("pcSkuUk").title("Sales Number");
row.addColumn(salesNumber);
Column status = new Column("statusItemsGtc05Code").title("Status");
row.addColumn(status);
Column productNumber = new Column("pcProductNbr").title("Product Number");
row.addColumn(productNumber);
if (tableModel.isExporting()) {
tableModel.setTable(table);
tableModel.render();
}
String view= tableModel.render();
request.setAttribute("exportList",view);
return SUCCESS;
}
}
jsp file:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="
http://displaytag.sf.net" prefix="display"%>
<%@ taglib prefix="jmesa" uri="/WEB-INF/tld/jmesa.tld" %>
<link rel="stylesheet" type="text/css"
href="<s:url value='/stylesheet/jmesa.css'/>" />
<script type="text/javascript" src="<s:url value='/scripts/jmesa/jquery.jmesa.js' />"></script>
<script type="text/javascript" src="<s:url value='/scripts/jmesa/jmesa.js' />"></script>
<script type="text/javascript"
src="<s:url value='/scripts/opm.js' />"></script>
<script type="text/javascript"
src="<s:url value='/scripts/omps.js' />"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/scripts/jmesa/
jmesa.js">
</script>
<script type="text/javascript">
function onInvokeAction(id) {
setExportToLimit(id, '');
createHiddenInputFieldsForLimitAndSubmit(id);
}
</script>
<script type="text/javascript">
function onInvokeExportAction(id) {
var parameterString = createParameterStringForLimit(id);
location.href = '${pageContext.request.contextPath}/jmesaAction?' + parameterString;
}
</script>
<!-- using jmesa instead of display tag -->
<form action="prodEnquiry-search.action" method="post" id="prodEnqResultsForm" name="prodEnqResultsForm">
<input type="hidden" id="id" name="id" />
<input type="hidden" id="actionType" name="actionType" />
<s:actionmessage/>
<s:actionerror/>
<jmesa:tableModel id="enquiryTbl" items="${enquiryList}" var="bean" exportTypes="pdf,csv,excel"
maxRows="50" maxRowsIncrements="25,50,100" stateAttr="restore">
<jmesa:htmlTable width="100%">
<s:set var="pidValue" value="#attr.bean.pcPidPk"/>
<jmesa:htmlRow uniqueProperty="pcPidPk" highlighter="true">
<jmesa:htmlColumn property="pcPidPk" title="PID " >${pidValue}</jmesa:htmlColumn>
<jmesa:htmlColumn property="pcSkuUk" title="Sales Number " filterable="false"/>
<jmesa:htmlColumn property="statusItemsGtc05Code" title="Status " />
<jmesa:htmlColumn property="pcProductNbr" title="Product Number " filterable="false" />
<jmesa:htmlColumn property="pcUpcCodeUk" title="UPC Code " filterable="false"/>
<jmesa:htmlColumn property="pcmfgCodeFk" title="Mfg Number " />
<jmesa:htmlColumn property="pcMfgPartNumber" title="Mfg Part Number " filterable="false" />
<jmesa:htmlColumn property="prodDesc" title="Product Description "/>
<jmesa:htmlColumn title="Action " filterable="false">
<select id="actionType${pidValue}" onchange="javascript:forwardActionType(${pidValue},this.options[this.selectedIndex].value,'ProdInquiry')">
<option value="S">Action</option>
<option value="View">View</option>
</select>
</jmesa:htmlColumn>
</jmesa:htmlRow>
</jmesa:htmlTable>
</jmesa:tableModel>
</form>
Can you please explain me what is wrong in my code?Its not at all going to my action class.
There is a firebug error saying jQuery not defined in jQuery.jmesa.js line 1001
Please help!
Regards,
Nikhila