2011-11-14 2 views
0

나는이 다소 무식한 질문에 대해 미리 사과하지만 지난 주 내내 가능한 한 많이 조사했습니다. 마지막 최후의 수단은 스택 오버 플로우에있는 사람들이 가장 똑똑하다는 사실을 알고 있기 때문에 여기에 왔습니다.Play Framework의 모든 웹 페이지에서 실행해야하는 코드는 어디에 두어야합니까?

나는 회사 위임에 따라 최근 Play로 전환 한 ASP.NET 사용자입니다. 나는 조금 길다. MVC는 나에게 처음 접했고 ORM은 나를 완전히 무서워합니다.

나는 playframework.org에 대한 튜토리얼을 살펴 봤고 블로그 엔진을 만들 수 있었지만 튜토리얼의 코드를 내 프로그램으로 옮겨 적어서 실제로 배운 것 같지 않습니다. 아무것도.

이제 .NET 웹 사이트의 PLay 버전을 작성해야합니다. 그래서 내 질문에.

내 게임의 각 웹 페이지에서 거대한 HTML 문자열을 생성하는 Java 코드를 실행 한 다음 해당 HTML 문자열을보기의 레이블에 어딘가에 침투해야합니다. 100 라인 함수와 같아서 클라이언트로 렌더링하는 문자열을 반환합니다. 내 .NET 웹 사이트에서 나는 단지 이것을 내 마스터 페이지의 "코드 숨김"에 넣었다.

문제는 Play의 마스터 페이지에 코드 숨김이없는 것입니다. 그렇다면이 모든 자바 코드를 모든 페이지에서 실행해야하는 곳은 어디입니까? 컨트롤러를 살펴보기 시작했는데 렌더링 함수로 전달할 객체가 아니 었습니다. 이것은 100 라인 함수로 많은 로직을 수행하고 거대한 문자열을 반환합니다. 모든 화면에이 코드가 필요하므로 제어기 레벨에 두는 것이 적절하지 않습니다. 매번 "렌더링"을해야하기 때문에 100 개의 동작을해야하기 때문입니다.

정말로 더 큰 질문입니다. 코드가 모델이 아니며 컨트롤러에서 실제로 이해가되지 않는 경우 Play에서 어디에서 고정합니까? 어쨌든, 미리 감사드립니다. 나는이 모든 "렌더링"을 위해 통과해야 할 것 때문에,

건배 조쉬

답변

0

나는 모든 화면에이 코드가 필요합니다, 그래서 컨트롤러 수준에서 넣어 이해가되지 않습니다 시간, 나는 100 개의 행동을 좋아한다.

@Before 주석을 사용할 수 있습니다. 템플릿에서

@Before 
public static void bigFunction() { 
    String result; 
    // Do a lot of stuff... 
    renderArgs.put("yourLabel", result); 
} 

당신을 통해 지금에 액세스 할 수 있습니다 : 컨트롤러에서

${yourLabel} 
+0

그는 또한 미리 렌더링 된 HTML을 반환하기 때문에 raw : $ {yourLabel.raw()}를 사용해야합니다. –

+0

또한 bigFunction은 동작으로 노출되지 않도록 보호해야합니다. –

+0

나는 반대하지 않을 것이지만 반드시 필요한가요?/bigFunction에 액세스 할 때 404가 표시됩니다. –

0

나는 마리우스 당신이 단기적으로 찾고있는 해답이 있다고 생각. 그러나 IMHO, 당신은 함수를 grok하고 MVC 구성 요소에 올바르게 다시 구현할 시간이 있다면 후임 (또는 일년 내내) 자신이 잘 할 것입니다. 즉, 데이터 표현 및 조작 항목을 모델에 넣고 HTML 생성 내용을보기 태그 또는 main.html 템플리트에 넣습니다.

+0

나는이 스콧을 고려해 봤지만이 코드는 도우미 유틸리티 함수 일 뿐이며 그 자체로 어떤 상태도 없다. 모든 요청을 실행하기 만하면됩니다. 하나의 속성과 해당 속성을 채우는 함수가있는 흥미로운 모델이 될 것입니다. 이 작업은 일반적으로 MVC에서 수행됩니까? –

+0

일반적으로 최소한의 로직을 포함하는 템플릿을 만들 수 있습니다. 이점은 생성하는 HTML과 더 직접적으로 유사 해 보이는 것입니다 (모든 out.println이없는 경우). 그런 다음 컨트롤러 (또는 모델)에 의사 결정 항목을 넣고 템플릿에 필요한 renderArgs 값을 설정합니다. 그러나 Play에서는 맞춤 태그 (http://www.playframework.org/documentation/1.2.3/templates#tags - 맞춤 자바 태그까지 스크롤 다운)를 만들 수 있습니다. 예외는 ... –

관련 문제