2010-08-05 6 views
3

스칼라로 코딩 된 서블릿이 있습니다. 나는 거기에이 같은 일부 코드가 있습니다 :스칼라/자바 서블릿 : 출력하는 방법 < 대신

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value}</BODY></HTML> 
def value = "Hello <BR/> World" 

value을 위해 생성 된 해당 HTML 코드는 내가 (아래 그림 참조) HTML 코드를 생성 할 수 어떻게

Hello &lt;BR/&gt; World 

입니까? 당신이 xml.Elemvalue의 유형을 변경 괜찮다면 사전에

Hello <BR/> World 

덕분에

답변

7

, 당신은 할 수

제 생각에는
def value = <xml:group>Hello <BR/> World</xml:group> 

추가

, 당신 가능한 한 많은 XML 인라인을 입력해야합니다. 그런 다음에 만 입력의 시간 유효성 검사를 컴파일합니다. 다른 모든 솔루션은 어느 시점에서 런타임 예외가 발생하거나 (예 : /을 잊어 버린 경우) XML 레이아웃을 손상시킬 수 있습니다. 당신이 정말로 쉬운 변환해야 할 경우

그러나,이 작업을 수행 할 수 있습니다 : 다음

class XmlString(str: String) { 
    def assumeXML = xml.XML.loadString("<xml:group>" + str + "</xml:group>") 
    def toUnparsedXML = new xml.Unparsed(str) 
} 
implicit def stringToXmlString(str: String) = new XmlString(str) 

def value = "Hello <BR/> World" 

과 (어떤 이유로, 여전히 <xml:group> 일부를 보여줍니다, 당신은 xml.NodeSeq.fromSeq(value.assumeXML.child)으로 제거 할 수 나) 유사

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value.assumeXML}</BODY></HTML> 

또는 (물론, 당신이 Unparsed(value) 할 것, 여기에 암시 적 필요가 없을 것)

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value.toUnparsedXML}</BODY></HTML> 

유효하지 않은 XML을 제공하면 런타임에 assumeXML 메서드가 실패합니다. toUnparsedXML은 잠재적으로 위험한 데이터조차 모든 입력을 허용합니다.

+0

답변 해 주셔서 감사합니다. 더 쉬운 방법이 있기를 바랬습니다. 그러나 결국에는'xml.Elem'으로 유지하는 것이 더 의미가 있습니다. – Jus12

관련 문제