2014-03-31 2 views
1

Liferay 6.1에서 Spring MVC 포틀릿에 대해 작동하도록 친숙한 URL 매핑을 얻으려고 시도하고있다. liferay-portlet-xmlLiferay 6.1 + Spring MVC Portlet 4.0 : 친숙한 URL 매핑

내 추가 가능한 설명서와 블로그의 예에 따라하고 등은 다음과 같습니다되는 friendly-url-routes.xml

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class> 
<friendly-url-mapping>search</friendly-url-mapping> 
<friendly-url-routes>com/.../friendly-url-routes.xml</friendly-url-routes> 

<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.1.0//EN" 
      "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_1_0.dtd"> 
<routes> 
    <route> 
    <pattern>/{match}</pattern> 
    <generated-parameter name="foo">{match}</generated-parameter> 
    </route> 
</routes> 

내 스프링 MVC 컨트롤러는

@Controller 
@RequestMapping("VIEW") 
public class CarModelController { 

    @ActionMapping 
    public void action(@RequestParam("foo") final String testParam, 
      final ActionRequest request, final ActionResponse response) { 
    this.logger.info("default action"); 
    this.logger.info("testParam = {}", testParam); 
    } 

    @RenderMapping 
    public String render(final RenderRequest request, final RenderResponse response) { 
    this.logger.info("default render"); 
    return "index"; 
    } 
} 
처럼 간다

0123을 사용하여 내 포틀릿에 전화하면렌더링 단계 출력 만 발생하면 작업 메서드가 호출되지 않습니다.

내가

<portlet:actionURL var="lastStepUrl"> 
    <portlet:param name="foo" value="bar" /> 
</portlet:actionURL> 

을 Liferay가 /baseurl/-/search/bar?p_auth=sometoken&p_p_lifecycle=1 같은 모양을 생성하는 URL을 사용하여이 페이지에 대한 링크를 작성하는 경우. 액션 단계를 올바르게 실행하고 해당 URL을 직접 호출 할 수 있습니다. 그러나 제거하려는 매개 변수는 p_authp_p_lifecycle입니다.

모든 제안은 따뜻하게 환영합니다.

+0

Liferay는 모르지만 POST/GET에서 'portlet : actionUrl'이 Chrome의 개발 도구 또는 FireFox와 같은 것을 사용하여 직접 호출 할 때 발생하는 상황에 따라 생성된다는 것을보고 시작합니다. 방화범. 그런 다음 컬 (curl) 한 무언가를 사용할 수 있습니다. 작동하는 요청의 정확한 사본으로 시작한 다음 작동을 멈출 때까지 제거를 시작하십시오. 이는 하나의 요청이 트리거되도록하고 다른 요청은 트리거하지 않도록 식별합니다. 찾을 내용 : HTTP 요청 유형 (POST/GET/etc.), 전송중인 헤더, POST/GET 변수 전송 중 등. – CodeChimp

답변

2

나는 Liferay의 Friendly URL에 대해 많이 모른다. 그러나 나는 당신이 URL에서 p_p_lifecycle을 완전히 제거 할 수 없다고 생각합니다.

이 매개 변수는 수행 할 작업을 Liferay에 알려줍니다. 이 매개 변수에는 두 개의 값 (0 또는 1)이 있습니다.

  • 0

    은 1 프로세스 액션 메소드를 호출하는 Liferay를 알려줍니다

  • 반면, 포틀릿을 렌더링하는 Liferay를 알려줍니다.

는 우리가 액션 우리가 할 수있는 단계 하드 코드 1다시피이

<pattern>"your URL pattern"</pattern> 
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter> 
<implicit-parameter name="javax.portlet.action">"Your action"</implicit-parameter> 

처럼 할 수있는 다음 특정 액션 URL에서 제거 할 말을하고 routes.xml file.same 방법에 넣어 수 있습니다 어떤 URL을 렌더링을 위해 우리는 0

p_auth 시도가 portal-ext.properties 파일의 속성 아래에 넣어 제거하려면 넣을 수 있습니다

portlet.add.default.resource.check.enabled=false 
auth.token.check.enabled=false 
+0

나는이 줄을 portal-ext.properties에 넣은 후 cohirm ist p_auth 더 이상 찾지 않습니다. url에 있습니다. – suatCoskun