Несколько маркеров в этой строке - Строка не может быть преобразована в переменную - Синтаксическая ошибка на токене "food", delete
У меня возникают следующие ошибки: 1- Несколько маркеров в этой строке - Строка не может быть преобразована в переменную - Синтаксическая ошибка на токене "food", delete
2 - Несколько маркеров в этой строке - Синтаксическая ошибка на токене "деталь", удалите этот токен - Строка не может быть преобразована в переменную
Я пометил эти строки с помощью ** в NewPortlet.java
, Ниже мои два связанных файла
NewPortlet.java
package com.test;
import java.io.IOException;
import java.util.Date;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.Constants;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.model.User;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
public class NewPortlet extends MVCPortlet {
public static String VIEW_JSP ="/html/new/view.jsp";
@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse ) throws IOException, PortletException {
//renderRequest
super.doView(renderRequest, renderResponse);
}
public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException {
String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
try {
if (cmd.equals(Constants.ADD)){
String food = ParamUtil.getString(actionRequest, "food");
String detail = ParamUtil.getString(actionRequest, "detail");
long userId = CounterLocalServiceUtil.increment();
User user_= UserLocalServiceUtil.createUser(userId);
** user_.setFood(food);
** user_.setDetail(detail);
user_.setCreateDate(new Date());
UserLocalServiceUtil.updateUser(user_ , false);
SessionMessages.add(actionRequest,"food-added-succesfuly");
}
}catch (SystemException e) {
//TODO Auto-generated Catch block
e.printStackTrace();
}
super.processAction(actionRequest, actionResponse);
}
}
}
и мой сервисный строитель
<entity name="Food" local-service="true" remote-service="true">
<!-- PK fields -->
<column name="foodId" type="long" primary="true" />
<!-- Group instance -->
<column name="food" type="string" />
<column name="detail" type="string" />
<column name="createDate" type="new Date()" />
...
1 ответ
Решение
Вы пытаетесь добавить объект "Еда", но вместо этого вы использовали объект пользователя. Пользовательский объект не имеет какого-либо атрибута / столбца в качестве пищи или детализации.
Чтобы добавить Еду, вы должны использовать код, как показано ниже.
long userId = CounterLocalServiceUtil.increment(Food.class);
Food foodEntry_=FoodLocalServiceUtil.createFood(userId);
foodEntry_.setFood(food);
foodEntry_.setDetail(detail);
foodEntry_ .setCreateDate(new Date());
FoodLocalServiceUtil.updateUser(foodEntry_ , false);
SessionMessages.add(actionRequest,"food-added-succesfuly");