Грешка при задаване на израз X със стойност [Ljava.lang.String;@]

Получавам понякога и понякога не странна грешка:

Error setting expression X with value [Ljava.lang.String;@......]

Понякога се случва, а понякога не. Това е тихо досадно. Грешката понякога идва от този клас:

package com.coreRestaurant.menuItem;

import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class MenuItemAction extends ActionSupport implements ModelDriven<MenuItem>{

    private MenuItem menuItem = new MenuItem();
    private final String DATABASE_PROBLEMS = "Error code : Database problems";
    private String json;

    public String execute(){
        MenuItemService itemService = new MenuItemService();
        if(itemService.testDatabaseConnectionU()){
        setJson(new Gson().toJson(itemService.getMenuItemsByMenuId(menuItem.getMenuId()) ));
        }else{
            setErrorToBeSentBackToClientSide(DATABASE_PROBLEMS);
        }
        return SUCCESS;
    }

    @Override
    public MenuItem getModel() {
        return menuItem;
    }

    public String getJson() {
        return json;
    }

    public void setJson(String json) {
        this.json = json;
    }

    private void setErrorToBeSentBackToClientSide(String error){

        String errorCode = error;
        setJson(new Gson().toJson(errorCode));

    }
}

И след това MenuItem клас:

package com.coreRestaurant.menuItem;

public class MenuItem {

    private String name;
    private double price;
    private int menuId;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getMenuId() {
        return menuId;
    }
    public void setMenuId(int menuId) {
        this.menuId = menuId;
    }
    public void setMenuId(MenuItem fromJson) {
        setName(fromJson.getName());
        setPrice(fromJson.getPrice());

    }
}

И аз извиквам тези неща от PHP файл (двата реда правят това, но вторият е тревожно дете):

 $specificMenuJson = file_get_contents('http://localhost:8080/Core/read?id=' . $menuId);
 $specificMenuItemsJson = file_get_contents('http://localhost:8080/Core/readMenuItemById?menuId=' . $menuId);

Има проблем със задаването на стойността на menuId, но имам включени гетери и сетери. Не знам защо понякога не успява да направи това. Някакви предположения?


person user4080732    schedule 04.11.2014    source източник


Отговори (2)


Опитайте да промените името на метода setMenuId

public void fromJsonMenuId(MenuItem fromJson) {
    setName(fromJson.getName());
    setPrice(fromJson.getPrice());
}
person Roman C    schedule 05.11.2014

Проблемът е че:

Когато управляваният от модел Interceptor извиква метод setMenuId(int menuId), той предава стойност на низ към аргумента int menuId. Тъй като няма имплицитно преобразуване, направено от Interceptor от String в int

person AsSiDe    schedule 04.11.2014
comment
сигурен ли си? защото първият не извиква клас MenuItemAction, а клас MenuAction, който не е включен тук. И двете извикват различни ActionClasses. - person user4080732; 05.11.2014
comment
добре ще го проверя. Но все още е странно, защото повечето пъти работи (поне на localhost) и там предава низ към int. Не знам защо го прави, но се опитвам да модифицирам и виждам резултата. Ще ви уведомя дали е проработило. Все пак благодаря за отговора. - person user4080732; 05.11.2014
comment
добре, опитах това, но все още не работи. Промених моя menuId на String, но не работи - person user4080732; 05.11.2014
comment
на кой ред получавате тази грешка. Стартирайте в режим на отстраняване на грешки и осигурете трасирането на стека. - person AsSiDe; 05.11.2014