我迷上了Liferay的login.jsp,我正在重定向到网址localhost:8080?f=0
。在这种情况下,login.jsp
肯定会被调用。但我无法将f的参数值设为0.而是将其值设为null
。我将f的值打印为request.getParameter("f")
。
这里我想根据f的值做一些任务,但每次都评估为null
。如何在login.jsp
中获取请求参数?
答案 0 :(得分:1)
request
是一个servlet请求,但不一定是用于此请求的实际(由appserver提供)。为了在Liferay的上下文中工作,请尝试PortalUtil.getHttpServletRequest
和PortalUtil.getOriginalServletRequest
的变体。您可能需要renderRequest
而不是request
。试试,不确定这是否会真正解决:
PortalUtil.getOriginalServletRequest(
PortalUtil.getHttpServletRequest(renderRequest));
或者你可以尝试
PortalUtil.getOriginalServletRequest(request);
同样,我并非100%确定其中任何一项都有效,因为我无法想象你打算做什么。不知怎的,我也感觉到你的未公开的潜在问题有更好的解决方案。
更多背景资料:
在门户网站中,您通常可以很好地屏蔽原始的HttpServletRequest,而不是您可以访问与当前生命周期阶段相匹配的请求对象,例如: renderRequest
。然而,JSP规范假定您始终可以访问实现request
的{{1}}对象 - ServletRequest
但是实现renderRequest
,而两者都是类似地,它们是不同的不相关的接口。因此,从技术上讲,当您使用JSP时,您必须能够访问PortletRequest
对象(由于规范)。但是,正如您所知道的,这个JSP是从portlet上下文调用的,您无法真正使用它。我已经给出的解决方法是Liferay的专有API方法,以获得对appserver请求的控制权。使用它并不是一种好的风格,但有时候只是完成工作。
答案 1 :(得分:0)
我认为您的网址存在问题。如果您正在为您的Web应用程序使用jsp-servlet编程,那么正确的URL将是:
create table #TempTable (id int)
declare @query nvarchar(100)
set @query = 'select 1 as id union select 2'
insert into #TempTable
exec sp_executesql @query
select *
from #TempTable
[XmlElement("catalogueItemNotification", Type = typeof(CatalogueItemNotificationType), Namespace = "urn:gs1:gdsn:catalogue_item_notification:xsd:3")]
只是您的项目名称。http://localhost:8080/<AppName>/<Servlet/JSP>?f=0
只是你的servlet / jsp页面名称。e.g。
<AppName>
以上是我的JSP-Servlet WebApp网址示例。
答案 2 :(得分:0)
你的网址错了。它必须是SELECT
asi.nid_lot AS nid_lot,
asi.nid_programme AS nid_programme,
MIN(asi.mensualite_habiter_3p) AS mensualite_habiter_3p,
( 6371 * acos( cos(radians(45.8219562)) * cos(radians(lat)) * cos(radians(lng) - radians
(4.9013965)) + sin(radians(45.8219562)) * sin(radians(lat)) ) ) AS distance
FROM
nh_actweb_search_index asi
WHERE
(
mensualite_habiter_3p < 875.56)
AND (
mensualite_habiter_3p > 619.5)
GROUP BY
asi.nid_programme
ORDER BY
distance ASC,
mensualite_habiter_3p ASC
如果您不想显示您的网址,可以使用友好网址解析它。