안녕하세요!배열의 문자열을 기반으로 메서드에 액세스하려면 어떻게해야합니까?
이것이 가능한지 확실하지 않지만 잘하면 자바로되어 있습니다. 가변 변수를 사용하고 변수를 동적으로 액세스하여 PHP에서이 작업을 수행 한 것을 알고 있지만 다른 질문에서는 Java에서는이 작업을 수행 할 수 없습니다.
JSF GUI에 체크 상자 상태를 포함하는 문자열 배열이 있습니다. 모든 체크 박스가 설정되면 배열은 다른 체크 박스의 값을 포함하는 문자열로 채워질 것입니다.
private static final String[][] OVERVIEW_FIELDS = {{"ID", "requestid"},
{"Date added", "dob"}, {"Title", "requestTitle"}, {"Process", "processId"},
..., ..., ...};
은 그 때 나는 그것을 밖으로 JSF SelectItems를 배열을 반복하고합니다 :
for (int i = 0; i < OVERVIEW_FIELDS.length; i++) {
SelectItem item = new SelectItem(OVERVIEW_FIELDS[i][0], OVERVIEW_FIELDS[i][1]);
getFields().add(item);
}
확인란의
레이블과 값은 다음과 같습니다 배열을 통해 반복에 의해 구축
문제 및 현재 해결책 (누군가가 나를 리팩터링하여 더 나은 것으로 변신하도록 도울 수 있습니다 :
for (String item : getVisibleFields()) {
if (item.equals("dob")) {
setDob(true);
}
if (item.equals("requestTitle")) {
setRequestTitle(true);
}
if (item.equals("processId")) {
setProcessId(true);
}
if (...) {
}
}
이렇게 계속해서 11 개의 부울이 계속됩니다. 이 솔루션이 마음에 들지 않아 내 시스템의 다른 콩에서 비슷한 패턴을 본다.
누구에게 더 좋은 해결책이 있는지 알고 있습니까? 부울은 확인란 필드 배열에 포함 된 내용에 따라 렌더링 된 필드를 true/false로 설정하는 열을 제어합니다.
JSF EL에서 visibleFields 변수와 contains 메소드에 액세스 할 수 있기를 기대 했으므로 객체가 배열에 존재하면 true 또는 false를 반환합니다. 이것은 작동하지 않는 것 같아 EL이 나를 포함하는 메소드에 접근 할 수 없다.
rendered="#{overviewFilterBean.dob}"
을 그리고 나는이 코드를 시도 :
내가 현재 사용하고
rendered="#{overviewFilterBean.visibleFields.contains['dob']}">
지금이 내 마지막 배열을 사용하고
getFields().contains(OVERVIEW_FIELDS[i][1])
에 따라 논리 값을 설정하려고 저를 주도, 어떻게하면 가능합니까?
일부 실제와 일부 의사 코드 (지금을 목표로 한 솔루션을) 다음과
for (int i = 0; i < OVERVIEW_FIELDS.length; i++) {
if (item.equals(OVERVIEW_FIELDS[i][1])) {
setOVERVIEW_FIELDS[i][1](true);
}
}
큰 질문 :
나 OVERVIEW_FIELDS[i][1]
에서 값을 사용 할 수있는 방법이 있나요 올바른 부울 변수를 설정하거나지도로 바꾸고 JSF EL을 사용하여 키가지도에 있는지 확인 할 수 있습니까?
편집 : 코드의 반영 방법 (5 개) 예외의 결과
, 큰 블록을 그들을 취급하고 또한 사람들은 그것의 비싼 방법이라고 말했다.이것은 내가 오래된 해결책이나지도를 사용하는 것이 최선의 방법이라고 믿게한다. 지도 솔루션을 사용해 보자. =)
안녕하십니까.이 방법을 수행 할 수있는 코드를 보여 주셔서 감사합니다. 당신이 말한 것처럼 매우 사실입니다. 이것은 예외의 톤을 생성하고, 일을하는 데 비용이 많이 들지 만, 각 부울을 시도하는 것만으로도 IM이 더 좋을까요? –
예, 부울 필드 만 포함하는 목록이있는 것이 좋습니다 (이 질문을 작성할 때 질문에 대한 오해가 있음). 그러나 그러한 목록을 가지고 있다면,지도를 작성할 수도 있습니다. –
예 JSF EL에서 렌더링 된 "# {! empty testBean.map [ 'test']}"와 bool을 설정하는 대신 맵을 채울 수 있다는 것을 알았 기 때문에 그의 대답을 받아 들였습니다! 감사 –