簡體   English   中英

從后端獲取枚舉並將其用作javascript中的字符串

[英]Getting an enum from backend and use it as a string in javascript

今天,我與Java后端開發人員進行了激烈的討論。 我用jsangular做前端。 他的休息服務向我發送了一個包含枚舉的對象。 我將其作為字符串獲取,並需要在角度網格中顯示。

枚舉很容易解釋。

我得到的示例: Person = {gender: "MAN", position: "IS_EMPLOYED"}

在視圖中,我必須顯示以下內容: man is employed

所以我以一種簡單且通用的方式解決了它: Person.gender.toLowerCase () + ' ' + Person.position.toLowerCase ().replace ('_', ' ')

他發現了這個可怕的程序,並要求我使用if else制作一個映射器或切換So: If(Person.gender==="MAN") return "man" Else if....

標簽名稱始終與枚舉名稱相同(僅小寫和空格而不是下划線)

他橫沖直撞地認為,這是不好的編碼,基本上是可怕的,而且是對上帝的一種罪過。

所以我的問題是這種不良/良好做法(左右故事)還是在某些情況下可以接受並可以辯護?

在手機上輸入內容,因此無法將代碼示例放在正確的標簽中。

制作客戶端枚舉映射可能是一個更好的主意-然后只發送回實際值。 因此,您可以:

var personTypes: {
    "1": "Is Employed",
    ..
}

然后只需將1作為枚舉發回並使用lookup對象:

console.log("Person status: " + personTypes[Person.position]);

這也使得顯示類型列表更加容易-選擇一個新的類型,然后簡單地將枚舉發回:

<select ng-model="personTypeEnum" ng-options="enum as type for (enum, type) in personTypes"></select>

有幾種查看方式:

映射更加可靠:他說的很對,應該有一個完整的映射功能。 這使您可以處理錯誤(即,如果您獲得的position響應是“香蕉”,則您可能不應該僅僅將其丟掉)。 當您可能使用嚴​​格的架構時,這在后端開發中尤其重要。

規模問題:您的方法在技術上沒有任何問題。 如果條目數量很少,或者用戶群或應用程序范圍很小,則可能沒有太大關系。 它實際上並不符合最佳實踐,但它確實有效,如果這很重要,那么可能就足夠了。 盡管您應該始終追求最佳實踐,但是您需要牢記全局。

效率:一種方法可能比另一種方法更有效。 差異可以忽略不計。 在Web開發人員中,速度是重中之重,如果兩種方法都能獲得相同的結果,但速度要快得多,則選擇該方法。

在控制台中簽入打印對象。 例如,如果object是person,則如果將該對象呈現為json,gender(enum)將為

{"success":true,"person":[{"class":"person","id":26,"comment":null,"gender":{"enumType":"com.project.Person$Gender","name":"MEN"},

這樣您就可以打印person.gender.name,這將給MEN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM