나는 비계 템플릿을 리팩토링 그리고 난이 문제와 벽에 부딪 :GRAILS : _FORM.GSP 템플릿에서 서비스 로직을 호출 할 수 있습니까?
내가 템플릿 _FORM.GSP에서 서비스 (일부 보안 로직을)를 호출하려고했던 -하지만 코드 부분이 아닌 출력 부
에서본인은 여기에서 제안 된 것을 시도했다 : How do I call a Grails service from a gsp?
- 내가 태그 라이브러리를 사용하려고했지만, Grails의 내 지식은 내가 추가 해봤 그
- 충분히 광범위하지 않을 수 있습니다 가져 오기 및 _FORM.GSP 파일의 시작 부분에 def (grailsA 서비스 신청 및 응용 프로그램 인스턴스화가 누락 된 속성 응용 프로그램에 충돌했습니다. 누락 된 속성 grailsApplication)
- 나는 메소드에서 isAllowedToEdit 메소드로 직접 taglib를 호출하려고 시도 했었습니다. g.isAllowedToEdit도 알 수없는 메소드 resp에서 충돌했습니다. 어떤 방법이 있는지
private renderFieldForProperty(p, owningClass, prefix = "") { boolean hasHibernate = pluginManager?.hasGrailsPlugin('hibernate') boolean display = true boolean required = false if (hasHibernate) { cp = owningClass.constrainedProperties[p.name] display = (cp ? cp.display : true) required = (cp ? !(cp.propertyType in [boolean, Boolean]) && !cp.nullable && (cp.propertyType != String || !cp.blank) : false) } /* trying to do this part */ // I want to assign value to cp.editable - so later I can render read-only fields in renderEdit if (!mySecurityService.canEdit(springSecurityService.currentUser, owningClass.getClass(), actionName, p.name)) { cp.editable = false } /* trying to do this part */ if (display) { %> <div class="fieldcontain \${hasErrors(bean: ${propertyName}, field: '${prefix}${p.name}', 'error')} ${required ? 'required' : ''}"> <label for="${prefix}${p.name}"> <g:message code="${domainClass.propertyName}.${prefix}${p.name}.label" default="${p.naturalName}" /> <% if (required) { %><span class="required-indicator">*</span><% } %> </label> ${renderEditor(p)} </div> <% } } %>
: "그런 속성 g"는
는 그 템플릿 _form.gsp 내가 이런 일을하고 싶지 표준 GSP보기
다른 규칙이 보인다 cp.editable 지정 - 귀하의 제안을 시도하겠습니다.
페이지 상단에 서비스를 설치하려고 했습니까? – sanghavi7
예, _form.gsp 상단에 가져 오기 및 가져 오기를 추가했습니다. - 다른 항목에서 설명한대로 – hoppo
라고 표시되어 있습니다. 좋은 방법이라고 생각하지 않습니다. 그냥 컨트롤러에서 서비스를 호출하십시오. – sanghavi7