gpt4 book ai didi

spring - Liferay 中 Spring MVC portlet 中的多个呈现和操作方法

转载 作者:行者123 更新时间:2023-12-04 18:05:15 25 4
gpt4 key购买 nike

我正在创建一个 portlet,它将采用表单中的用户名并在提交表单后在同一个 portlet 中显示欢迎消息。为此,我在渲染方法中使用了参数。

注意:我在 liferay 6.2 中使用 spring-MVC。

问题是当我提交名称时,它会重定向到同一页面,而不是调用另一个渲染方法。

这是我的view.jsp:

 <portlet:actionURL var="actionOneMethodURL">
<portlet:param name="action" value="getUserName">
</portlet:param>
</portlet:actionURL>
<form action="${actionOneMethodURL}" method="post">
Enter Your Name:
<input type="text" name="userName" />
<input type="submit" value="OK!" />
</form>

Controller 代码如下:

public class PortletController implements Controller {

private static final String WELCOME_PAGE = "welcomeUser";

public void handleActionRequest(ActionRequest request,
ActionResponse response) throws Exception {
}

@ActionMapping(params = "action=getUserName")
public void actionOneMethod(ModelMap model, ActionRequest request,
ActionResponse response) {
String userName = request.getParameter("userName");
model.addAttribute("userName", userName);
response.setRenderParameter("action", "displayName");
}

@RenderMapping
public ModelAndView handleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
model.put("helloWorldMessage", "Hello There!");
return new ModelAndView("helloWorld", model);
}

@RenderMapping(params = "action=displayName")
public String displayName(ModelMap model, RenderRequest request,
RenderResponse response) throws Exception {
return WELCOME_PAGE;
}
}

有人可以帮忙吗??

编辑:这种情况会因任何 xml 文件而发生吗??如果是哪一个?

最佳答案

下面是部分代码应该可以工作:

view.jsp :这个表单的名称应该告诉 Controller 中使用的是哪个方法。

<portlet:actionURL name="actionOneMethod" var="actionOneMethodURL"/>
<form:form action="${actionOneMethodURL}">
<!-- your form body... -->
</form:form>

Controller.java :我所做的一个更改是注释了一些处理程序方法,并将您的操作方法更改为按其名称使用。休息看起来很好。

public class PortletController implements Controller {

private static final String WELCOME_PAGE = "welcomeUser";

//I dont think you need this part at all...
/**public void handleActionRequest(ActionRequest request,
ActionResponse response) throws Exception {
}**/

@ActionMapping("actionOneMethod")
public void actionOneMethod(ModelMap model, ActionRequest request,
ActionResponse response) {
String userName = request.getParameter("userName");
model.addAttribute("userName", userName);
response.setRenderParameter("action", "displayName");
}

@RenderMapping
public ModelAndView handleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
model.put("helloWorldMessage", "Hello There!");
return new ModelAndView("helloWorld", model);
}

@RenderMapping(params = "action=displayName")
public String displayName(ModelMap model, RenderRequest request,
RenderResponse response) throws Exception {
return WELCOME_PAGE;
}
}

我假设您配置了正确的 View 解析器。这是案例的一部分:

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>

我认为注释方法的部分导致了问题。希望对您有所帮助。

关于spring - Liferay 中 Spring MVC portlet 中的多个呈现和操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com