확장 메서드

1. 백엔드 Person 엔티티 코드(C#)

public class Person
{
    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    private int age;
    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    //매개변수 없는 생성자
    public Person(){}
    //매개변수가 있는 생성자
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    //매개변수 없는 인스턴스 메서드
    public string getMyName()
    {
        return this.name;
    }

    //다중 매개변수 인스턴스 메서드
    public string JoinStr(string str1, string str2)
    {
        return str1 + str2;
    }
}Code language: C# (cs)

C# 백엔드 코드에서 객체 변수 설정

Person pTest = new Person("Tom", 22);
context.Put("pTest", pTest);Code language: JavaScript (javascript)

2. VTL 템플릿 코드 & 렌더링 설명

메서드 호출<br />
$pTest.getMyName();

#set($a = "hello")
#set($b = "foxdevelop")

$pTest.JoinStr($a, $b);Code language: PHP (php)
1. $pTest.getMyName()
  • 객체의매개변수 없는 메서드 getMyName() 호출
  • 반환값 Tom

✅ Velocity 매개변수 없는 메서드 호출:괄호() 생략 가능,$pTest.getMyName$pTest.getMyName()와 동일

2. $pTest.JoinStr($a, $b)
  • 문자열 매개변수 두 개를 받는 메서드 호출
  • VTL이 먼저 $a$b를 해석한 뒤 실인자 "hello""foxdevelop" 전달
  • 문자열 결합 결과 반환:hellofoxdevelop

요약

  1. 메서드 이름은 대소문자를 엄격히 구분
    C# getMyName()GetMyName(),템플릿은 코드 표기와 일치해야 합니다.
  2. 매개변수는 변수를 그대로 사용
    따옴표를 추가하지 마세요,$pTest.JoinStr($a,$b)가 올바릅니다;$pTest.JoinStr("$a","$b")로 쓰면 리터럴 문자열”$a”가 전달됩니다
  3. 속성과 메서드 구분
  • $pTest.Name → 속성 접근(getter)
  • $pTest.getMyName() → 메서드 호출
  1. 반환값 자동 출력
    템플릿에 $객체.메서드()를 적으면 Velocity가 반환값을 자동으로 출력;출력이 필요 없으면 #set으로 결과를 받습니다:
#set($result = $pTest.JoinStr($a,$b))Code language: PHP (php)

3. 최종 페이지 렌더링 결과

메서드 호출
Tom;

hellofoxdevelop;

확장 메서드

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다