2015-04-21 2 views
2

Я хочу получать JSON ответа от сервера для этого я использую следующий кодне в состоянии извлечь весь ответ JSon от сервера

public class AtomAddressDetail implements java.io.Serializable { 

    private Long id; 
    private Place placeByStateId; 
    private Atom atom; 
    private Place placeByCountryId; 
    private Place placeByCityId; 
    private Place placeByStreetId; 
    private Place placeByAreaId; 
    private String houseno; 
    //getter and setter 
    } 

public class Place implements java.io.Serializable { 
    private Long id; 
    private String name; 
    private String about; 
    //getter and setter 
} 

В действии

public class SettingAction extends ActionSupport { 
private long pageId; //getter and setter 
private long id; //getter and setter 
private List<AtomAddressDetail> atomAddressList; 
    public String singleAddress() { 
     setAtomAddressList(cdao.singleAddress(getId(), getPageId())); 
     for (AtomAddressDetail a : getAtomAddressList()) { 
          System.out.println("Country " + a.getPlaceByCountryId().getId() + " " + a.getPlaceByCountryId().getName()); 
          System.out.println("state " + a.getPlaceByStateId().getId() + " " + a.getPlaceByStateId().getName()); 
          System.out.println("city " + a.getPlaceByCityId().getId() + " " + a.getPlaceByCityId().getName()); 
          System.out.println("area " + a.getPlaceByAreaId().getId() + " " + a.getPlaceByAreaId().getName()); 
          System.out.println("street " + a.getPlaceByStreetId().getId() + " " + a.getPlaceByStreetId().getName()); 
         } 
      } 
     public List<AtomAddressDetail> getAtomAddressList() { 
       return atomAddressList; 
      } 

      public void setAtomAddressList(List<AtomAddressDetail> atomAddressList) { 
       this.atomAddressList = atomAddressList; 
      } 
} 

Выход:

Country 2 India 
state 3 asdf 
city 4 sdfsd 
area 5 www 
street 6 sdfdsa f 

struts.xml

<action name="SingleAddressDetail" class=".SettingAction" method="singleAddress"> 
      <result name="success" type="json"> 
       <param name="includeProperties"> 
        ^atomAddressList\[\d+\]\.id, 
        ^atomAddressList\[\d+\]\.houseno, 
        ^atomAddressList\[\d+\]\.placeByAreaId.id, 
        ^atomAddressList\[\d+\]\.placeByAreaId.name, 
        ^atomAddressList\[\d+\]\.placeByCityId.id, 
        ^atomAddressList\[\d+\]\.placeByCityId.name, 
        ^atomAddressList\[\d+\]\.placeByStateId.id, 
        ^atomAddressList\[\d+\]\.placeByStateId.name, 
        ^atomAddressList\[\d+\]\.placeByCountryId.id, 
        ^atomAddressList\[\d+\]\.placeByCountryId.name 
       </param> 
       <param name="excludeNullProperties">true</param> 
       <param name="root"> 
        #action 
       </param> 
      </result> 
      <result name="input" type="json"/> 
      <result name="login" type="json"></result> 
     </action> 

В JSP

{"atomAddressList":[{"houseno":"sadf sadf ","id":1}]} 

Проблема в JSP странице я получаю значение только два filds, но я хочу, чтобы извлечь все значения, которые определены в действии struts.xml «s.

значения печатаются в действии должным образом, как указано, но на доступ в JSP, как alert(data.atomAddressList[0].placeByCountryId.id); он показывает

error:Uncaught TypeError: Cannot read property 'id' of undefined 
+0

Можете ли вы просто указать 'atomAddressList' как' root' вместо использования параметра 'includeProperties'? –

+0

отображение "null". – xrcwrn

+0

Попробуйте с параметрами '' w/o и ответ post json. –

ответ

0

Вы не включены некоторые свойства в результате JSon, потому что они должны быть действительными регулярных выражений выражения для каждого свойства , Следует избегать символа периода.

<param name="includeProperties"> 
    ^atomAddressList\[\d+\]\.id, 
    ^atomAddressList\[\d+\]\.houseno, 
    ^atomAddressList\[\d+\]\.placeByAreaId\.id, 
    ^atomAddressList\[\d+\]\.placeByAreaId\.name, 
    ^atomAddressList\[\d+\]\.placeByCityId\.id, 
    ^atomAddressList\[\d+\]\.placeByCityId\.name, 
    ^atomAddressList\[\d+\]\.placeByStateId\.id, 
    ^atomAddressList\[\d+\]\.placeByStateId\.name, 
    ^atomAddressList\[\d+\]\.placeByCountryId\.id, 
    ^atomAddressList\[\d+\]\.placeByCountryId\.name 
</param> 
+0

Да, это работает – xrcwrn

Смежные вопросы