Mayank Vaid Mayank Vaid - 9 months ago 51
jQuery Question

Exception parameters.grid [in template "template/jquery/gridcolumn.ftl"

I am trying to make a grid by using Struts 2 jquery grid plugin along with struts jquery plugin and struts json plugin. I am beginner to this.

Here is my JSP code:

<s:form action="misinfo">
<s:textfield name="sdate" label="START DATE"></s:textfield>
<s:textfield name="edate" label="END DATE"></s:textfield>
<s:submit value="submit"></s:submit>
<s:url var="remoteurl" action="jsontable" />
<sjg:grid id="gridTable" caption="login ID" dataType="json"
href="%{remoteurl}" pager="true" gridModel="gridModel"
rowList="10,15,20" rowNum="15" rownumbers="true" />
<sjg:gridColumn name="login ID"/>
<sjg:gridColumn name="select" />


<package name="mypackage" namespace="/" extends="struts-default, json-default">
<result-type name="json" class="org.apache.struts2.json.JSONResult" default="true"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<action name="mis" class="com.action.JsonAction">
<result name="success">/WEB-INF/jsp/mis.jsp</result>
<result name="input">/WEB-INF/jsp/mis.jsp</result>
<action name="jsontable" class="com.action.JsonAction">
<result name="success">/WEB-INF/jsp/mis.jsp</result>

Action class

public class JsonAction extends ActionSupport {
private String gridModel;
private int rows = 0;
private int page = 0;
private String sortAsc;
private String sortIndex;
private String searchField;
private String searchOprtn;
private int total = 0;
private int records = 0;

public String execute() throws Exception {

int to = (rows * page);
int from = to - rows;
JsonActionDao jsn = new JsonActionDaoImpl();
records = jsn.getNoOfRecords();
gridModel = jsn.getRecords();
total = (int) Math.ceil((double) records / (double) rows);
System.out.println("row "+rows+"page "+page+"gridModel "+gridModel);
return "success";
// getter and setter for fields.,,,....

Exception that I am getting

The following has evaluated to null or missing:
==> parameters.grid [in template "template/jquery/gridcolumn.ftl" at line 22, column 29]

Tip: It's the step after the last dot that caused this error, not those before it.
Tip: If the failing expression is known to be legally refer to something that's null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (!myDefault, (

FTL stack trace ("~" means nesting-related):
- Failed at: ${parameters.grid?string?replace(".",... [in template "template/jquery/gridcolumn.ftl" at line 22, column 27]
- Reached through: #assign escapedOptionId = "\${paramet... [in template "template/jquery/gridcolumn.ftl" at line 22, column 1]

Java stack trace (for programmers):
freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]

Answer Source

The grid tag shouldn't be self-closed, it should have a body where you put gridCoumn tags.

The name of the column should be a property of the gridModel, and as a bean's property must be an identifier, i.e. without spaces.

Grid model should be a list of objects that a reserialized to JSON via invoking an action that you use in href attribute.

<sjg:grid id="gridTable" caption="login ID" dataType="json"
    href="%{remoteurl}" pager="true" gridModel="gridModel"
    rowList="10,15,20" rowNum="15" rownumbers="true">
      <sjg:gridColumn name="loginID"/>
      <sjg:gridColumn name="select" />

You can find an example of the grid using the project wiki page for Grid Tag.