2014-12-02 3 views
0

struts2-jQuery-plugin, 특히 struts2-jQuery-grid-plugin에 대해 배우려고합니다. 지금은 개발자가 제공 한 자습서를 복제했습니다. Customer과 같은 간단한 클래스를 그리드 내부에 표시하는 데 성공했습니다 (예제에서는 JSP 내부의 언급 된 격자에서 제대로 참조 할 수 있음). 완벽하게 정상적으로 : 나는 내 자신의에서이 간단한 Customer 클래스하지만 다른하지를 사용하려고 할 때마다 예를 들어 내가 복잡 싶지 않다으로의 클래스 Reservation (나는 게시하도록하겠습니다 예를 가정 해 봅시다 대한JQuery Grid로 클래스 속성에 액세스하는 Struts 2

<sjg:grid 
    id="gridtable" 
    caption="Customer Examples" 
    dataType="json" 
    href="%{remoteurl}" 
    pager="true" 
    gridModel="gridModel" 
    rowList="10,15,20" 
    rowNum="15" 
    rownumbers="true"> 

    <sjg:gridColumn name="id" index="id" title="ID" formatter="integer" sortable="false"/> 
    <sjg:gridColumn name="name" index="name" title="Name" sortable="true"/> 
    <sjg:gridColumn name="country" index="country" title="Country" sortable="false"/> 
    <sjg:gridColumn name="city" index="city" title="City" sortable="false"/> 
    <sjg:gridColumn name="creditLimit" index="creditLimit" title="Credit Limit" formatter="currency" sortable="false"/> 
</sjg:grid> 

하지만 일이 시작이 복잡하기 내 프로젝트 코드가있는 질문) :

public class Reservation { 

private Customer customer; 
private Car vehicle; 

public setCustomer(Customer customer){ 
this.customer = customer; 
} 
public setCar(Car vehicle){ 
this.vehicle = vehicle; 
} 

} 

그래서 고객 내부의 등록 정보/필드에 액세스하려면 어떻게해야합니까? 이는 예약 내부에도 있습니까? Struts2에서 오는와 JSP 내부 그리드는 모든 데이터가 포함 된 JSON 수신으로, 나는이 같은 일을하려고 했어요이 jQuery 플러그인을 사용하기 전에 <s:property /> 태그를 사용하여 :

<sjg:gridColumn name="customer.city" index="city" title="City" sortable="false"/> 

을하지만 작동하지 않습니다 내 격자 열이 비어있는 것으로 표시됩니다.

표시된 필드에 OGNL 표현식을 적용 할 수 있습니까? jQuery Grid를 사용하기 전에 먼저 열의 내용을 대문자로 표시하고 싶습니다. 표시 한 속성에 .toUpperCase()을 적용하여 관리 할 수 ​​있지만이 플러그인을 사용하면 약간 손실됩니다. 나는 그것이 내가 표시되는 표기법을 사용하여 "복잡한"개체로 접근이 가능하다고 확인 할 수있었습니다

UPDATE는 (다른 "복잡한"클래스 테스트). 그래서 내 문제는 내 특정 클래스의 JSON 세대 (내가 더 복잡한 질문을하지 않도록 적어 두지 않은 것)에 낳는 것 같아요 ... 나는 생성 된 JSON을 살펴 보려고합니다. 그리드로 가서 어떤 일이 일어나는지 알려주십시오.

SOLVED : JSON 세대 내에 nullpointer가 있음을 확인했습니다. 문제가 거기 누워 있었다. @Andrea는 객체의 내부 객체에 접근하는 방법을 지적 했으므로 받아 들여지는 대답이 내 초기 질문이었습니다 (제대로 수행했지만 nullpointer 문제로 인해 실패했습니다).

답변

0

고객 내부의 예약/예약 필드에 어떻게 액세스합니까?

정확하게하는 방법. 그것이 작동하지 않으면, 당신은 뭔가 잘못하고 있습니다.

봅니다 변경 BTW 주요 객체에 index :

<sjg:gridColumn name="customer.city" index="customer" title="City" sortable="false"/> 

그리고 당신이 List<Reservation> 있고, 보장하는 모든 오브젝트 (예약, 고객, 자동차 등) have a no-args constructor (중 암시 또는 선언 됨), 모든 getter와 setter는 올바르게 선언되어야합니다.

+0

답장을 보내 주셔서 감사합니다. @Andrea. 먼저 액션이 실행될 때리스트가 있었고 모든 getter와 setter가 배치됩니다. 인덱스를 변경해 보았지만 작동하지 않았습니다. 또한 빈 생성자 나 getter 또는 setter도 잊어 버리지 않았습니다. Im가 동일한 작업 내에서 두 가지 경우로 테스트하기 때문에 처음에는 "단순"클래스를 사용하고 모든 데이터를 올바르게 표시하므로 이상합니다. , "복잡한"클래스로 전환하려고하지만 아무것도 표시되지 않습니다 .. :( – JorgeGRC

+0

아마도 JSON을 그리드 용으로 생성하는 동안 약간의 오류가 있습니다. 그리고 그 사실을 알아 채지 못할 것입니다. 그러면 왜 아무 것도 표시되지 않는 이유가 설명됩니다. 이전에는 JSON으로 null 값을 파싱 할 때 몇 가지 문제가있었습니다 ('Vehicle'in'Reservation'이 null 일 수 있습니다). – JorgeGRC

+0

'List inside my gridModel' : 목록은 모델 자체가 아니고 내부에 있지 않아야합니다 –

관련 문제