質問するログイン新規登録

質問編集履歴

2

先ほど追記したコードの追記先誤り

2022/08/07 15:16

投稿

K.KATSU2
K.KATSU2

スコア10

title CHANGED
File without changes
body CHANGED
@@ -77,215 +77,6 @@
77
77
 
78
78
  ```
79
79
 
80
- ```
81
- import datetime
82
- import PySimpleGUI as sg
83
- import settingReader as sr
84
- import redmineOperator as ro
85
-
86
- sg.theme('light grey')
87
-
88
- t_delta = datetime.timedelta(hours=9)
89
- JST = datetime.timezone(t_delta, 'JST')
90
- today = datetime.datetime.now(JST)
91
- formatToday = today.strftime('%Y-%m-%d')
92
- afterDay = today + datetime.timedelta(weeks=1)
93
- formatAfter = afterDay.strftime('%Y-%m-%d')
94
-
95
- projects = ['']
96
- trackers = ['']
97
- issues = ['']
98
- statuses = ['']
99
- priorities = ['']
100
- member = ['']
101
- ratio = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
102
- cmFields = ['']
103
-
104
- currentProject = ''
105
- currentIssue = ''
106
- currentUser = ''
107
-
108
- setting = sr.SettingReader('C:/Users/Katsuhito7/Documents/redmineSetting.txt')
109
- rmOpe = ro.RedmineOperator(setting.getRedmineURL(), setting.getApiKey())
110
- if rmOpe is not None:
111
- projects = rmOpe.getProjectList()
112
- trackers = rmOpe.getTrackerList()
113
- statuses = rmOpe.getStatusList()
114
- priorities = rmOpe.getPriorityList()
115
- member = rmOpe.getUserList()
116
- cmFields = rmOpe.getCustomFields('')
117
-
118
- layout = [
119
- [sg.Radio('登録モード', group_id='0', key='-NEW_MODE-', enable_events=True, default=True),
120
- sg.Radio('編集モード', group_id='0', key='-EDIT_MODE-', enable_events=True),
121
- sg.Checkbox("題名のロック", key='-ROCK_TITLE-', enable_events=True, default=False, pad=((98, 0), (0, 0)))],
122
- [sg.Text('プロジェクト'), sg.Combo(projects, key='-PROJECT-', enable_events=True, size=(42, 1), readonly=True)],
123
- [sg.Text('トラッカー '), sg.Combo(trackers, key='-TRACKER-', enable_events=True, size=(15, 1), readonly=True),
124
- sg.Button('設定情報の取得', enable_events=True, pad=((78, 0), (0, 0)))],
125
- [sg.Text('題名'), sg.Combo(issues, key='-SUBJECT-', enable_events=True, size=(50, 1), readonly=True)],
126
- [sg.Text('説明', key='-SUMMARY-'), sg.Multiline(key='-DESCRIPTION-', size=(50, 1))],
127
- [sg.Text('ステータス '), sg.Combo(statuses, key='-STATUS-', enable_events=True, size=(20, 1), readonly=True),
128
- sg.Text('開始日'), sg.InputText(key='-START-', default_text=formatToday),
129
- sg.CalendarButton('Date', target='-START-', format='%Y-%m-%d')],
130
- [sg.Text('優先度'), sg.Combo(priorities, key='-PRIORITY-', enable_events=True, size=(20, 1), readonly=True),
131
- sg.Text(' 期日'), sg.InputText(key='-DUE-', default_text=formatAfter),
132
- sg.CalendarButton('Date', target='-DUE-', format='%Y-%m-%d')],
133
- [sg.Text('担当者'), sg.Combo(member, key='-ASSIGNED-', enable_events=True, size=(20, 1), readonly=True),
134
- sg.Text('進捗率'), sg.Combo(ratio, key='-RATIO-', enable_events=True, size=(15, 1), readonly=True, disabled=True)],
135
- [sg.Text('CF1.'), sg.Combo(cmFields, key='-FIELDS_KEY1-', enable_events=True, size=(15, 1), readonly=True),
136
- sg.InputText(key='-FIELDS_VALUE1-', size=(30, 1))],
137
- [sg.Text('CF2.'), sg.Combo(cmFields, key='-FIELDS_KEY2-', enable_events=True, size=(15, 1), readonly=True),
138
- sg.InputText(key='-FIELDS_VALUE2-', size=(30, 1))],
139
- [sg.Button('実行', enable_events=True, size=(10, 1), pad=((220, 10), (5, 5))), sg.Quit('終了', size=(10, 1))]
140
- ]
141
-
142
- window = sg.Window('Redmine操作', layout, default_element_size=(12, 1))
143
-
144
- while True:
145
- event, values = window.read()
146
-
147
- if event in (None, '終了'):
148
- break
149
- else:
150
- selectedPj = values['-PROJECT-']
151
- if selectedPj != currentProject and selectedPj != '':
152
- if values['-ASSIGNED-'] == '':
153
- issues = rmOpe.getIssueList(selectedPj, '')
154
- else:
155
- issues = rmOpe.getIssueList(selectedPj, values['-ASSIGNED-'])
156
-
157
- window['-SUBJECT-'].update(values=issues)
158
-
159
- selectedIs = values['-SUBJECT-']
160
- if selectedIs != currentIssue and selectedIs != '':
161
- cmFields = rmOpe.getCustomFields(selectedIs)
162
- window['-FIELDS_KEY1-'].update(values=cmFields)
163
- window['-FIELDS_KEY2-'].update(values=cmFields)
164
-
165
- if values['-ROCK_TITLE-']:
166
- print('タイトルを編集できないようにする')
167
-
168
- if values['-NEW_MODE-']:
169
- window['-SUMMARY-'].update('説明')
170
- window['-RATIO-'].update(disabled=True)
171
-
172
- if values['-EDIT_MODE-']:
173
- window['-SUMMARY-'].update('コメント')
174
- window['-RATIO-'].update(disabled=False)
175
-
176
- currentProject = selectedPj
177
- currentIssue = selectedIs
178
- currentUser = values['-ASSIGNED-']
179
-
180
- window.close()
181
-
182
- ```
183
-
184
- ```
185
- from redminelib import Redmine
186
-
187
-
188
- class RedmineOperator:
189
- redmine = None
190
- projects = None
191
- trackers = None
192
- statuses = None
193
- priorities = None
194
- users = None
195
- issues = None
196
- customFields = None
197
-
198
- def __init__(self, url, apiKey):
199
- self.redmine = Redmine(url, key=apiKey)
200
- self.projects = self.redmine.project.all()
201
- self.trackers = self.redmine.tracker.all()
202
- self.statuses = self.redmine.issue_status.all()
203
- self.priorities = {1: '低め', 2: '通常', 3: '高め', 4: '急いで', 5: '今すぐ'}
204
- self.users = self.redmine.user.all()
205
- self.customFields = self.redmine.custom_field.all()
206
-
207
- def getProjectList(self):
208
- projectList = []
209
- for elm in self.projects:
210
- projectList.append(elm.name)
211
-
212
- return projectList
213
-
214
- def getTrackerList(self):
215
- trackerList = ['']
216
- for elm in self.trackers:
217
- trackerList.append(elm.name)
218
-
219
- return trackerList
220
-
221
- def getStatusList(self):
222
- statusList = ['']
223
- for elm in self.statuses:
224
- statusList.append(elm.name)
225
-
226
- return statusList
227
-
228
- def getPriorityList(self):
229
- priorityList = ['']
230
- for elm in self.priorities.values():
231
- priorityList.append(elm)
232
-
233
- return priorityList
234
-
235
- def getUserList(self):
236
- userList = ['']
237
- for elm in self.users:
238
- userList.append(elm.lastname + ' ' + elm.firstname)
239
-
240
- return userList
241
-
242
- def getIssueList(self, pjName, userName):
243
- issueList = ['']
244
- for elm in self.projects:
245
- if elm.name == pjName:
246
- # ユーザ指定がある場合、idを取得
247
- uid = 0
248
- if userName != '':
249
- for um in self.users:
250
- if um.lastname + ' ' + um.firstname == userName:
251
- uid = um.id
252
- break
253
-
254
- self.issues = self.redmine.issue.filter(project_id=elm.id, assigned_to_id=uid)
255
- else:
256
- self.issues = self.redmine.issue.filter(project_id=elm.id)
257
-
258
- for e in self.issues:
259
- issueList.append(e.subject)
260
-
261
- break
262
-
263
- return issueList
264
-
265
- def getCustomFields(self, issueName):
266
- fields = ['']
267
- if issueName != '':
268
- issueId = 0
269
- for elm in self.issues:
270
- if elm.subject == issueName:
271
- issueId = elm.id
272
- break
273
-
274
- target = self.redmine.issue.get(issueId)
275
- if hasattr(target, 'custom_fields'):
276
- for e in target.custom_fields:
277
- for cfe in self.customFields:
278
- if cfe.id == e.id:
279
- fields.append(cfe.name)
280
- break
281
- else:
282
- for cfElm in self.customFields:
283
- fields.append(cfElm.name)
284
-
285
- return fields
286
-
287
- ```
288
-
289
80
  ### 備考
290
81
  ・eclipseを使用
291
82
  ・JavaEE(Java11)

1

質問コードの追記

2022/08/07 15:05

投稿

K.KATSU2
K.KATSU2

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,83 +1,292 @@
1
- ### 前提・実現したいこと
2
-
3
- サーブレットにsubmitでPOSTした際、onSubmitで指定した関数からJQueryとAjaxを利用して一度DBにSQL(Select)で問合せし、該当項目が既存であればUpdate処理を行い、存在しなければInsert処理を行うという処理を実現したいです。
4
-
5
- ### 解決したい課題「SubmitでPOSTする前に、onSubmitでPOSTし戻り値を取得したい」
6
-
7
- 以下のようなコードを書いたのですが、DAOをnewしたあたりでWEB画面のページが失われてしまい
8
- pw.print でAjaxに文字列を渡したつもりでもconfirmダイアログが表示されません。
9
-
10
- onSubmitで呼ぶ関数内でPOSTすることは推奨されないのでしょうか。
11
- まずは、Ajax側で戻り値を受け取ってダイアログを出すということを実現したいです。
12
-
13
- ```Java
14
-
15
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
16
- if(request.getParameter("Regist") != nul){
17
- if(request.getParameter("result").equals("insert"){
18
- /** インサート処理記述 */
19
- } else if(request.getParameter("result").equals("update"){
20
- /** アップデート処理記述 */
21
- }
22
- String disp = "/forward";
23
- RequestDispatcher dispatch = request.getRequestDispatcher(disp);
24
- dispatch.forward(request, response);
25
- }else {
26
- if(request.getParameter("selectUser") != null) {
27
- CheckExistAccountDAO checkExist = new CheckExistAccountDAO();
28
- boolean result = checkExist.check(request.getParameter("selectUser"));
29
- PrintWriter pw = response.getWriter();
30
- pw.print(result ? "update" : "insert");
31
- pw.close();
32
- }
33
- }
34
- }
35
- ```
36
- ※「CheckExistAccountDAO」はアカウントテーブルに対してアカウントが存在を確認するためのDAOであり、
37
-  「checkExist.check」は引数にユーザIDを与えてテーブルにそのIDが存在したら true, 存在しなければfalse を返す関数です。
38
-
39
-
40
-
41
- ```JSP
42
- <!DOCTYPE html>
43
- <html>
44
- <head>
45
- <meta charset="utf-8">
46
- <title>POST×2</title>
47
- </head>
48
- <body>
49
- <form action="/forward" method="post" onSubmit="return accountExist()">
50
- <input type="submit" value="保存" name="Regist">
51
- <input type="text" id="result" name="result">
52
- </form>
53
- <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
54
- <script>
55
- function accountExist(){
56
- $.ajax({
57
- url : "forward",
58
- type: "POST",
59
- data:{selectUser : 'testUser'}
60
- }).done( function(result) {
61
- if(result == "update") {
62
- document.getElementById("result").innerText = 'update';
63
- return window.confirm("アカウントを更新しますか?");
64
- } else if(result == "insert") {
65
- document.getElementById("result").innerText = 'insert';
66
- return window.confirm("アカウントを登録しますか?");
67
- }
68
- }).fail(function(jqXHR, textStatus, errorThrown) {
69
- return false;
70
- });
71
-
72
- }
73
- </script>
74
-
75
- </body>
76
- </html>
77
-
78
- ```
79
-
80
- ### 備考
81
- ・eclipseを使用
82
- ・JavaEE(Java11)
1
+ ### 前提・実現したいこと
2
+
3
+ サーブレットにsubmitでPOSTした際、onSubmitで指定した関数からJQueryとAjaxを利用して一度DBにSQL(Select)で問合せし、該当項目が既存であればUpdate処理を行い、存在しなければInsert処理を行うという処理を実現したいです。
4
+
5
+ ### 解決したい課題「SubmitでPOSTする前に、onSubmitでPOSTし戻り値を取得したい」
6
+
7
+ 以下のようなコードを書いたのですが、DAOをnewしたあたりでWEB画面のページが失われてしまい
8
+ pw.print でAjaxに文字列を渡したつもりでもconfirmダイアログが表示されません。
9
+
10
+ onSubmitで呼ぶ関数内でPOSTすることは推奨されないのでしょうか。
11
+ まずは、Ajax側で戻り値を受け取ってダイアログを出すということを実現したいです。
12
+
13
+ ```Java
14
+
15
+ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
16
+ if(request.getParameter("Regist") != nul){
17
+ if(request.getParameter("result").equals("insert"){
18
+ /** インサート処理記述 */
19
+ } else if(request.getParameter("result").equals("update"){
20
+ /** アップデート処理記述 */
21
+ }
22
+ String disp = "/forward";
23
+ RequestDispatcher dispatch = request.getRequestDispatcher(disp);
24
+ dispatch.forward(request, response);
25
+ }else {
26
+ if(request.getParameter("selectUser") != null) {
27
+ CheckExistAccountDAO checkExist = new CheckExistAccountDAO();
28
+ boolean result = checkExist.check(request.getParameter("selectUser"));
29
+ PrintWriter pw = response.getWriter();
30
+ pw.print(result ? "update" : "insert");
31
+ pw.close();
32
+ }
33
+ }
34
+ }
35
+ ```
36
+ ※「CheckExistAccountDAO」はアカウントテーブルに対してアカウントが存在を確認するためのDAOであり、
37
+  「checkExist.check」は引数にユーザIDを与えてテーブルにそのIDが存在したら true, 存在しなければfalse を返す関数です。
38
+
39
+
40
+
41
+ ```JSP
42
+ <!DOCTYPE html>
43
+ <html>
44
+ <head>
45
+ <meta charset="utf-8">
46
+ <title>POST×2</title>
47
+ </head>
48
+ <body>
49
+ <form action="/forward" method="post" onSubmit="return accountExist()">
50
+ <input type="submit" value="保存" name="Regist">
51
+ <input type="text" id="result" name="result">
52
+ </form>
53
+ <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
54
+ <script>
55
+ function accountExist(){
56
+ $.ajax({
57
+ url : "forward",
58
+ type: "POST",
59
+ data:{selectUser : 'testUser'}
60
+ }).done( function(result) {
61
+ if(result == "update") {
62
+ document.getElementById("result").innerText = 'update';
63
+ return window.confirm("アカウントを更新しますか?");
64
+ } else if(result == "insert") {
65
+ document.getElementById("result").innerText = 'insert';
66
+ return window.confirm("アカウントを登録しますか?");
67
+ }
68
+ }).fail(function(jqXHR, textStatus, errorThrown) {
69
+ return false;
70
+ });
71
+
72
+ }
73
+ </script>
74
+
75
+ </body>
76
+ </html>
77
+
78
+ ```
79
+
80
+ ```
81
+ import datetime
82
+ import PySimpleGUI as sg
83
+ import settingReader as sr
84
+ import redmineOperator as ro
85
+
86
+ sg.theme('light grey')
87
+
88
+ t_delta = datetime.timedelta(hours=9)
89
+ JST = datetime.timezone(t_delta, 'JST')
90
+ today = datetime.datetime.now(JST)
91
+ formatToday = today.strftime('%Y-%m-%d')
92
+ afterDay = today + datetime.timedelta(weeks=1)
93
+ formatAfter = afterDay.strftime('%Y-%m-%d')
94
+
95
+ projects = ['']
96
+ trackers = ['']
97
+ issues = ['']
98
+ statuses = ['']
99
+ priorities = ['']
100
+ member = ['']
101
+ ratio = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
102
+ cmFields = ['']
103
+
104
+ currentProject = ''
105
+ currentIssue = ''
106
+ currentUser = ''
107
+
108
+ setting = sr.SettingReader('C:/Users/Katsuhito7/Documents/redmineSetting.txt')
109
+ rmOpe = ro.RedmineOperator(setting.getRedmineURL(), setting.getApiKey())
110
+ if rmOpe is not None:
111
+ projects = rmOpe.getProjectList()
112
+ trackers = rmOpe.getTrackerList()
113
+ statuses = rmOpe.getStatusList()
114
+ priorities = rmOpe.getPriorityList()
115
+ member = rmOpe.getUserList()
116
+ cmFields = rmOpe.getCustomFields('')
117
+
118
+ layout = [
119
+ [sg.Radio('登録モード', group_id='0', key='-NEW_MODE-', enable_events=True, default=True),
120
+ sg.Radio('編集モード', group_id='0', key='-EDIT_MODE-', enable_events=True),
121
+ sg.Checkbox("題名のロック", key='-ROCK_TITLE-', enable_events=True, default=False, pad=((98, 0), (0, 0)))],
122
+ [sg.Text('プロジェクト'), sg.Combo(projects, key='-PROJECT-', enable_events=True, size=(42, 1), readonly=True)],
123
+ [sg.Text('トラッカー '), sg.Combo(trackers, key='-TRACKER-', enable_events=True, size=(15, 1), readonly=True),
124
+ sg.Button('設定情報の取得', enable_events=True, pad=((78, 0), (0, 0)))],
125
+ [sg.Text('題名'), sg.Combo(issues, key='-SUBJECT-', enable_events=True, size=(50, 1), readonly=True)],
126
+ [sg.Text('説明', key='-SUMMARY-'), sg.Multiline(key='-DESCRIPTION-', size=(50, 1))],
127
+ [sg.Text('ステータス '), sg.Combo(statuses, key='-STATUS-', enable_events=True, size=(20, 1), readonly=True),
128
+ sg.Text('開始日'), sg.InputText(key='-START-', default_text=formatToday),
129
+ sg.CalendarButton('Date', target='-START-', format='%Y-%m-%d')],
130
+ [sg.Text('優先度'), sg.Combo(priorities, key='-PRIORITY-', enable_events=True, size=(20, 1), readonly=True),
131
+ sg.Text(' 期日'), sg.InputText(key='-DUE-', default_text=formatAfter),
132
+ sg.CalendarButton('Date', target='-DUE-', format='%Y-%m-%d')],
133
+ [sg.Text('担当者'), sg.Combo(member, key='-ASSIGNED-', enable_events=True, size=(20, 1), readonly=True),
134
+ sg.Text('進捗率'), sg.Combo(ratio, key='-RATIO-', enable_events=True, size=(15, 1), readonly=True, disabled=True)],
135
+ [sg.Text('CF1.'), sg.Combo(cmFields, key='-FIELDS_KEY1-', enable_events=True, size=(15, 1), readonly=True),
136
+ sg.InputText(key='-FIELDS_VALUE1-', size=(30, 1))],
137
+ [sg.Text('CF2.'), sg.Combo(cmFields, key='-FIELDS_KEY2-', enable_events=True, size=(15, 1), readonly=True),
138
+ sg.InputText(key='-FIELDS_VALUE2-', size=(30, 1))],
139
+ [sg.Button('実行', enable_events=True, size=(10, 1), pad=((220, 10), (5, 5))), sg.Quit('終了', size=(10, 1))]
140
+ ]
141
+
142
+ window = sg.Window('Redmine操作', layout, default_element_size=(12, 1))
143
+
144
+ while True:
145
+ event, values = window.read()
146
+
147
+ if event in (None, '終了'):
148
+ break
149
+ else:
150
+ selectedPj = values['-PROJECT-']
151
+ if selectedPj != currentProject and selectedPj != '':
152
+ if values['-ASSIGNED-'] == '':
153
+ issues = rmOpe.getIssueList(selectedPj, '')
154
+ else:
155
+ issues = rmOpe.getIssueList(selectedPj, values['-ASSIGNED-'])
156
+
157
+ window['-SUBJECT-'].update(values=issues)
158
+
159
+ selectedIs = values['-SUBJECT-']
160
+ if selectedIs != currentIssue and selectedIs != '':
161
+ cmFields = rmOpe.getCustomFields(selectedIs)
162
+ window['-FIELDS_KEY1-'].update(values=cmFields)
163
+ window['-FIELDS_KEY2-'].update(values=cmFields)
164
+
165
+ if values['-ROCK_TITLE-']:
166
+ print('タイトルを編集できないようにする')
167
+
168
+ if values['-NEW_MODE-']:
169
+ window['-SUMMARY-'].update('説明')
170
+ window['-RATIO-'].update(disabled=True)
171
+
172
+ if values['-EDIT_MODE-']:
173
+ window['-SUMMARY-'].update('コメント')
174
+ window['-RATIO-'].update(disabled=False)
175
+
176
+ currentProject = selectedPj
177
+ currentIssue = selectedIs
178
+ currentUser = values['-ASSIGNED-']
179
+
180
+ window.close()
181
+
182
+ ```
183
+
184
+ ```
185
+ from redminelib import Redmine
186
+
187
+
188
+ class RedmineOperator:
189
+ redmine = None
190
+ projects = None
191
+ trackers = None
192
+ statuses = None
193
+ priorities = None
194
+ users = None
195
+ issues = None
196
+ customFields = None
197
+
198
+ def __init__(self, url, apiKey):
199
+ self.redmine = Redmine(url, key=apiKey)
200
+ self.projects = self.redmine.project.all()
201
+ self.trackers = self.redmine.tracker.all()
202
+ self.statuses = self.redmine.issue_status.all()
203
+ self.priorities = {1: '低め', 2: '通常', 3: '高め', 4: '急いで', 5: '今すぐ'}
204
+ self.users = self.redmine.user.all()
205
+ self.customFields = self.redmine.custom_field.all()
206
+
207
+ def getProjectList(self):
208
+ projectList = []
209
+ for elm in self.projects:
210
+ projectList.append(elm.name)
211
+
212
+ return projectList
213
+
214
+ def getTrackerList(self):
215
+ trackerList = ['']
216
+ for elm in self.trackers:
217
+ trackerList.append(elm.name)
218
+
219
+ return trackerList
220
+
221
+ def getStatusList(self):
222
+ statusList = ['']
223
+ for elm in self.statuses:
224
+ statusList.append(elm.name)
225
+
226
+ return statusList
227
+
228
+ def getPriorityList(self):
229
+ priorityList = ['']
230
+ for elm in self.priorities.values():
231
+ priorityList.append(elm)
232
+
233
+ return priorityList
234
+
235
+ def getUserList(self):
236
+ userList = ['']
237
+ for elm in self.users:
238
+ userList.append(elm.lastname + ' ' + elm.firstname)
239
+
240
+ return userList
241
+
242
+ def getIssueList(self, pjName, userName):
243
+ issueList = ['']
244
+ for elm in self.projects:
245
+ if elm.name == pjName:
246
+ # ユーザ指定がある場合、idを取得
247
+ uid = 0
248
+ if userName != '':
249
+ for um in self.users:
250
+ if um.lastname + ' ' + um.firstname == userName:
251
+ uid = um.id
252
+ break
253
+
254
+ self.issues = self.redmine.issue.filter(project_id=elm.id, assigned_to_id=uid)
255
+ else:
256
+ self.issues = self.redmine.issue.filter(project_id=elm.id)
257
+
258
+ for e in self.issues:
259
+ issueList.append(e.subject)
260
+
261
+ break
262
+
263
+ return issueList
264
+
265
+ def getCustomFields(self, issueName):
266
+ fields = ['']
267
+ if issueName != '':
268
+ issueId = 0
269
+ for elm in self.issues:
270
+ if elm.subject == issueName:
271
+ issueId = elm.id
272
+ break
273
+
274
+ target = self.redmine.issue.get(issueId)
275
+ if hasattr(target, 'custom_fields'):
276
+ for e in target.custom_fields:
277
+ for cfe in self.customFields:
278
+ if cfe.id == e.id:
279
+ fields.append(cfe.name)
280
+ break
281
+ else:
282
+ for cfElm in self.customFields:
283
+ fields.append(cfElm.name)
284
+
285
+ return fields
286
+
287
+ ```
288
+
289
+ ### 備考
290
+ ・eclipseを使用
291
+ ・JavaEE(Java11)
83
292
  ・Tomcat9.0