2013-02-13 3 views
2

enter image description here HTML 선택으로 생성 할 수 있도록 옵션을 쓰려면 어떻게해야합니까? 이 문제는 "옵션"이 배열이 아니라 집합이 필요하다는 것입니다.g : select 태그에 대한 세트를 작성하는 방법

여기에 제가 가진 모든 것이 있습니다. 나는 명명 규칙이 나쁘다는 것을 안다. 나는 그것을 고칠 것이다. 그러나 지금 당장은이 문제에 대해 며칠 동안 지켜보고있다.

컨트롤러 클래스

import org.springframework.dao.DataIntegrityViolationException 
import grails.plugin.mail.* 

class EmailServiceController { 

    static defaultAction = "contactService" 

def contactService() { 
    def options = new ArrayList() 
    options.push("Qestions about service") 
    options.push("Feedback on performed service") 
    options.push("Other") 
    options.push("Why am I doing this") 
    options 
} 

    def send() { 
     sendMail(){ 
      to "[email protected]" 
      from params.email 
      subject params.subject 
      body params.information 
     } 
    } 
} 

도메인 클래스

class EmailService { 

    static constraints = { 
    } 
} 

g :

<g:select name = "subject" from = "${options}" noSelection="Topic"/> 

는 또한 ""$ {selectOptions} "을 다음과 대신을 시도 GSP에서 선택 호출 $ {options} "행운 없음

def selectOptions() { 
    def options = new ArrayList() 
    options.push("Qestions about service": "QAS") 
    options.push("Feedback on performed service":"FoPS") 
    options.push("Other":"Other") 
    options.push("Why am I doing this":"WHY") 
    return options 
} 
+1

왜 당신이이'대신'List'의 Set' 필요가 있다고 생각합니까 여기에 적절한 방법인가? – doelleri

+0

@doelleri 스택 추적 : 메소드의 서명이 없습니다. java.lang.String.entrySet()은 인수 유형에 적용 가능합니다.() 값 : [] 가능한 해결책 : toSet(), toSet(), getBytes(), every() –

답변

6

좋아, 내가 생각 :이 같은 뷰에서 사용할 수

def selectOptions() { 
    def options = [:] 
    options["Qestions about service"] = "QAS" 
    options["Feedback on performed service"] = "FoPS" 
    [options:options] 
} 

지도를 사용 : 당신은 그런 실제 목록이나지도 중 하나를 입력해야 여기서 무슨 일이 일어나고 있는지 알아라. 질문에 빠진 부분은 gsp가 호출되는 부분입니다.

class EmailServiceController { 

    def contactService() { 
    def options = ["Qestions about service", "Feedback on performed service", "Other"] 
    // assumes you are going to render contactService.gsp 
    // you have to push the options to the view in the request 
    [options:options] 
    } 

} 

그리고 contactService.gsp에서 당신은 다음과 같습니다 :

<g:select name="subject" from="${options}" noSelection="['Topic': 'Topic']"/> 
0

작은 따옴표가 아닌 태그에 큰 따옴표를 사용해야합니다. 작은 따옴표를 사용하면 options 값을 가진 GString을 전달하는 대신 '${options}'과 같은 문자열을 전달하는 것입니다. 당신이 contactService 조치를 호출하고 가정 또한

<g:select name="subject" from="${options}" noSelection="Topic"/> 

는 대신 options.push("Other")을 반환하는 return options해야합니다. push()은 부울을 반환합니다. 즉, contactService의 암시 적 반환은 options 대신에 push()의 부울 결과입니다.

+0

이름과 값이있는 html은 어떨까요? –

+0

HTML은 어떻습니까? 우리는 여기서 어떤 직설적 인 HTML도 다루지 않습니다. – doelleri

+0

편집 된 질문보기 결과가 같음. Stacktrace : 메서드의 서명이 없습니다. java.lang.String.entrySet()은 인수 유형에 적용 가능합니다.() values ​​: [] 가능한 해결책 : toSet(), toSet(), getBytes(), every() –

3

options은 배열이나지도가 아닙니다. 구문 오류가 있습니다. 그렇기 때문에 선택 항목이 하나뿐입니다. 나는 수도

<g:select name="subject" from="${options.entrySet()}" 
    optionValue="key" optionKey="value" 
    noSelection="['Topic': 'Topic']"/> 
+0

오류가 발생했습니다 null 객체에 대해 entrySet() 메서드를 호출 할 수 없습니다 –

+0

Array에 배열을 전달 했습니까? – Chris

+0

업데이트 된 답변보기 – Chris

관련 문제