사용자가 액세스 할 수 없어도 읽기 전용으로 정의 된 일부 필드가있는 JSF2 양식이 있습니다. 내가 직면 한 문제는 양식을 제출할 때 읽기 전용 필드가 null로 평가된다는 것입니다. 나는 약간의 제안이있는 스레드 Data in <h:inputText readonly="true"> disappears when command button is clicked을 읽었지 만, 어떻게 작동하는지 또는 내 양식에 문제가 있다는 것을 이해하지 못했습니다.JSF2 읽기 전용 값이 제출되지 않았습니다.
<h:inputTextarea id="attLFld" value="#{cc.attrs.inc.attL}" rows="8" cols="40"
onblur="lookupL(this.value)" >
<rich:validator/>
</h:inputTextarea>
<h:inputText id="attLIFld" value="#{cc.attrs.inc.attLI}" size="14" readonly="true" />
<a4j:jsFunction name="lookupL" execute="attLFld"
render="attLFld,attLIFld"
action="#{incController.lookupL}">
</a4j:jsFunction>
을 그리고 여기 내 컨트롤러 방법은 읽기 전용
로 설정 태그를 사용하여 InputText]를 필드가 위의 스레드에서 제안 내가 노력public void lookupL()
{
newInc.setAttLI("1234");
}
입니다 : 여기
은 내 양식이 무엇<h:inputText id="attLIFld" value="#{cc.attrs.inc.attLI}" size="14" readonly="#{facesContext.renderResponse}" />
하지만 저에게는 도움이되지 않았습니다.
불행히도 그 제안은 저에게 효과적이지 않았습니다. 내 양식에 문제가 있다고 생각하지만, 나는 무엇을 볼 수 없습니다. 어떤 도움이라도 대단히 환영 할 것입니다. 여기
는 XHTML 추출물 (내가 BTW, Richfaces 4 사용)<composite:implementation>
<h:panelGrid columns="3" border="0">
<h:panelGrid columns="1" border="0">
<rich:panel id="rpA">
<f:facet name="header">
<h:outputText value="Field Group A"/>
</f:facet>
<h:panelGrid columns="2" columnClasses="titleCell" border="0">
<h:outputLabel for="fldA1" value="Field A1:" />
<h:inputTextarea id="fldA1" value="#{cc.attrs.mybean.fldA1}" rows="8" cols="40" immedite="true" onblur="lookup(this.value)" >
<rich:validator/>
</h:inputTextarea>
<h:outputLabel for="fldA2" value="Field A2:" />
<h:inputText id="fldA2" value="#{cc.attrs.mybean.fldA2}" size="14" readonly="true" />
<h:outputLabel for="fldA3" value="Field A3:"/>
<h:inputText id="fldA3" value="#{cc.attrs.mybean.fldA3}" readonly="#{facesContext.renderResponse}" size="14"/>
</h:panelGrid>
</rich:panel>
</h:panelGrid>
<h:panelGrid id="pgButtons" columns="1" border="0">
<a4j:commandButton type="button" value=">>>>" action="#{myBeanController.copyFields}" immediate="true"
execute="fldA1,fldA2,fldA2H,fldA3,fldA3H"
render="fldB1,fldB2,fldB3"/>
</h:panelGrid>
<rich:panel id="rpB">
<f:facet name="header">
<h:outputText value="Field Group B"/>
</f:facet>
<h:panelGrid columns="2" columnClasses="titleCell" border="0">
<h:outputLabel for="fldB1" value="Field B1:" />
<h:inputTextarea id="fldB1" value="#{cc.attrs.mybean.fldB1}" rows="8" cols="40" immediateue="true" >
<rich:validator/>
</h:inputTextarea>
<h:outputLabel for="fldB2" value="Field B2:" />
<h:inputText id="fldB2" value="#{cc.attrs.mybean.fldB2}" size="14" readonly="true" />
<h:outputLabel for="fldB3" value="Field B3:"/>
<h:inputText id="fldB3" value="#{cc.attrs.mybean.fldB3}" readonly="#{facesContext.renderResponse}" size="14"/>
</h:panelGrid>
</rich:panel>
</h:panelGrid>
<div id="hiddenFields">
<h:inputHidden value="#{cc.attrs.mybean.fldA2H}" id="fldA2H" />
<h:inputHidden value="#{cc.attrs.mybean.fldA3H}" id="fldA3H"/>
</div>
<a4j:jsFunction name="lookup" execute="fldA1"
render="fldA1,fldA2,fldA3,,fldA2H,fldA3H"
action="#{myBeanController.lookup}">
<a4j:param name="loc" assignTo="#{cc.attrs.mybean.fldA1}" />
</a4j:jsFunction>
</composite:implementation>
는 내가 여기서 할 노력하고있어 것은 내가 클릭하면 다음 필드 A1에 뭔가를 입력 A2 및 A3 필드를 채울하는 것입니다입니다 모든 Ax 필드를 Bx 필드에 복사하는 버튼. 방법 copyFields이처럼 사용할 구성 요소를 만들 수
@Model
public class MyBeanController {
private MyBean newMBean;
private MyBean mBean;
@Produces
@Named
public MyBean getNewMBean() {
return newMBean;
}
@Produces
@Named
public MyBean getMBean() {
return mBean;
}
public void setNewMBean(MyBean mBean) {
this.mBean = mBean;
}
@PostConstruct
public void initNewMBean() {
newMBean = new MyBean();
}
public void lookup() {
newMBean.setFldA2("boo");
newMBean.setFldA2H("boo");
newMBean.setFldA3("hoo");
newMBean.setFldA3H("hoo");
}
public String copyFields() {
newMBean.setFldB1(newMBean.getFldA1());
newMBean.setFldB2(newMBean.getFldA2H());
newMBean.setFldB3(newMBean.getFldA3H());
return null;
}
당신은 단순히 병렬로 숨겨진 입력 필드에 넣을 수 있습니다. 사용자가 값을 수정할 수없는 경우 양식 입력으로 왜 필요합니까? 대신 일반 텍스트로 표시하지 마세요. –
제안 해 주셔서 감사합니다. 시도해 보겠습니다. 읽기 전용 필드를 제출하는 이유는 무엇입니까? 많은 이유가 있지만 주요 요구 사항은 사용자 요구 사항입니다. – user2144223
나는 더 많은 파기를했고 콩 범위와 관련이있다. @ViewScoped와 RequestScoped를 사용하여 트레이드되었지만 둘 다 작동하지 않는 것 같습니다. 작동하는 유일한 범위는 세션이지만 필요한 범위는 아닙니다. 어떤 아이디어? – user2144223