当我单击一个方法来呈现页面的一部分时,在我手动刷新页面之前,它不会改变任何内容.
这是豆子:
boolean showPage = true;
public boolean getShowPage(){
return showPage;
}
Run Code Online (Sandbox Code Playgroud)
这是观点:
<h:form>
<p:commandButton value="Click" action="#{bean.hideContents()}" />
</h:form>
<p:panel rendered="#{bean.showPage}">
Contents
</p:panel>
Run Code Online (Sandbox Code Playgroud)
当我手动刷新页面时,面板会被隐藏,否则就不会.这是怎么造成的,我该如何解决?
所以我在尝试传递String值时遇到问题.
字符串值通过登录页面作为用户名输入.
然后,JSF调用Bean来验证登录信息,然后进入另一个JSF页面.
我想知道如何将用户名传递给新的JSF页面.谢谢.
当窗体处于可编辑模式时,我需要在primefaces数据表中包含inputTexts.
一切正常,除了使用immediate ="true"进行清理(没有表单验证).然后,primefaces数据表的行为是不可预测的.在使用新数据填充数据表后 - 它仍然存储旧值.
简短示例 - 显示h:dataTable和p:dataTable之间的差异 - 但是当示例中只有三个表中的一个时,它的工作方式相同:test.xhtml
<h:body>
<h:form id="form">
<p:dataTable var="v" value="#{test.list}" id="testTable">
<p:column headerText="Test value">
<p:inputText value="#{v}"/>
</p:column>
</p:dataTable>
<h:dataTable var="v" value="#{test.list}" id="testTable1">
<h:column>
<f:facet name="header">
<h:outputText value="Test value" />
</f:facet>
<p:inputText value="#{v}" />
</h:column>
</h:dataTable>
<p:dataTable var="v" value="#{test.list}" id="testTable2">
<p:column headerText="Test value">
<h:outputText value="#{v}" />
</p:column>
</p:dataTable>
<p:commandButton value="Clear" actionListener="#{test.clear()}" immediate="true" update=":form:testTable :form:testTable1 :form:testTable2"/>
<p:commandButton value="Update" actionListener="#{test.update()}" update=":form:testTable :form:testTable1 :form:testTable2"/>
</h:form>
</h:body>
Run Code Online (Sandbox Code Playgroud)
和java:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped; …Run Code Online (Sandbox Code Playgroud) 考虑到JSF和AJAX,我遇到了问题.我试图在访问者插入客户ID后更新一些客户详细信息.
首先,摘自xhmtl代码:
<h:form>
<h:panelGrid columns="2">
<h:panelGrid columns ="2" border="1" id="customer_grid">
<h:outputLabel value="#{mbean_msg.reservation_lblCustomerNo}" for = "customer_id"/>
<h:inputText id = "customer_id" value="#{reservationHandler.customer.customer_id}">
<f:ajax listener="{reservationHandler.autocompleteCustomerDetails}"
render="customer_grid" />
</h:inputText>
<h:outputLabel value="#{mbean_msg.reservation_lblLastname}" for="lastname"/>
<h:inputText id="lastname" value="#{reservationHandler.customer.lastname}" required ="true"
requiredMessage="#{error_msg.errmsgLastname}" validator="#{reservationHandler.validateCustomer}"/>
<h:outputLabel value="#{mbean_msg.reservation_lblFirstname}" for="firstname"/>
<h:inputText id="firstname" value="#{reservationHandler.customer.firstname}" required ="true"
requiredMessage="#{error_msg.errmsgFirstname}" validator="#{reservationHandler.validateCustomer}"/>
Run Code Online (Sandbox Code Playgroud)
监听器方法在我的java文件(ReservationHandler.java)中实现,如下所示:
public void autocompleteCustomerDetails(){
System.out.println("Auto Complete"); // for testing
}
Run Code Online (Sandbox Code Playgroud)
基本上我试图用监听器调用autocompleteCustomerDetails方法.不幸的是,从未调用此方法.无论如何,渲染似乎工作得很好,因为其他inputTexts自己更新(可见).
有没有人有想法,为什么没有听到听众?
我写了一个Filter下面是代码.
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
throws IOException, ServletException {
HttpServletRequest srequest = (HttpServletRequest) request;
HttpServletResponse sresponse = (HttpServletResponse) response;
String url = srequest.getRequestURI();
if(url.contains("//What patterns to be checked here?"))
{
//Invalidate the Session
//Redirect to error page
}
Run Code Online (Sandbox Code Playgroud)
我正在阅读形成的网址,并希望避免XSS攻击.因此,我想在URL中检查可能表明它可能导致XSS攻击的任何模式.
我可以获得我可以在这里查看的所有模式的综合列表吗?例如,
url.contains("<script>");
Run Code Online (Sandbox Code Playgroud) 我正在使用Primefaces 3.4.2和JSF2.1我创建了一个分为一些布局单元的页面.在右侧布局单元中,我有一个accordionPanel并创建了动态菜单,中间中心布局由ui:include和一个页面加载在图层中,当我点击链接时打开一个包含动态页面的对话框.打开和关闭对话框而不在正确的布局中执行任何操作后,中间中心布局不再起作用.我可以看到它,但我点击输入文本我不能输入任何东西也点击其他组件没有任何反应!什么是问题?有解决方案吗?
当单击菜单项打开对话框包含其他页面并单击树节点中心布局更改时,在对话框中打开的页面工作正常,但是当关闭对话框,中心布局按钮和输入不起作用时,其他布局组件运行良好!
我的新代码:
<p:layoutUnit id="right" position="east" size="145" style="text-align:center;direction: ltr!important;padding: 0px!important;">
<h:form prependId="false">
<script type="text/javascript">
function test(id,url,title){
document.getElementById('h1').value=id;
document.getElementById('h2').value=url;
document.getElementById('h3').value=title;
salamm.jq.click();
}
</script>
<h:inputHidden id="h1" value="#{adminC.nclose}" />
<h:inputHidden id="h2" value="#{adminC.nurl}"/>
<h:inputHidden id="h3" value="#{adminC.ntitle}"/>
<p:commandButton actionListener="#{adminC.addTab()}" id="salam" widgetVar="salamm" update=":dlgpanel" onstart="waitDialogmain.show()" style="display: none" oncomplete="waitDialogmain.hide();dlg1.show()"/>
<p:accordionPanel style="text-align: center;font-family: tahoma!important" activeIndex="#{menuGen.activeIndex}">
<p:tab title="connections" id="t0" rendered="#{menuGen.menuList1.length()>0}" >
<center>
<h:outputText escape="false" value="#{menuGen.menuList1}"/>
</center>
<br/>
</p:tab>
<p:tab title="manage" id="t1" rendered="#{menuGen.menuList2.length()>0}" >
<center>
<h:outputText value="#{menuGen.menuList2}" escape="false"/>
</center>
<br/>
</p:tab>
</p:accordionPanel>
</h:form>
</p:layoutUnit>
<p:layoutUnit id="center" style="padding: 0px!important;" position="center">
<p:layout …Run Code Online (Sandbox Code Playgroud) 通常,如果我必须在Spring中注入服务,我会使用
<bean id="mycontroller" class="com.MyController">
<property name="myService" ref="myService" />
Run Code Online (Sandbox Code Playgroud)
和
<bean id="myService" class="com.MyService"></bean>
Run Code Online (Sandbox Code Playgroud)
使用JSF时如何做同样的事情?我不想为bean使用两个IOC容器,而是将它保存在faces context本身.我见过像这样的链接
JSF 2使用@ManagedProperty注入Spring bean/service而没有xml
以及将spring bean注入jsf bean的问题.他们谈论将Spring托管bean注入JSF上下文.我想要做的事情必须非常简单,但无法找到任何相关信息.我是新手,将会感激任何帮助.
我有一些输入字段和一些selectonemenu,我需要验证它们并根据它们的验证我必须显示整个页面的错误消息.我还必须显示带有输入字段和selectonemenu的消息.
我的验证仅适用于空值和空值.由于我想显示基于null和空白字段的消息,我尝试了bean端验证.但我的验证方法永远不会被调用空白字段.
我想知道如何验证inputText文本字段并查看它是否与十进制格式匹配.而且在渲染时间内如何使用特定格式格式化该文本字段
我这样做了:
<rich:column id="soldes_comptables">
<f:facet name="header">
<h:outputText value="Solde Comptable" />
</f:facet>
<h:inputText id="inputTextSC" value="#{file.soldes_comptables}"
label="Montant"
style="border-color:#F2F3F7;"
validatorMessage="The number must be decimal eg: 000.00"
>
<f:convertNumber pattern="#,###,##0.00"/>
<f:validateRegex pattern="^[0-9]+(\.[0-9]{1,2})?$"></f:validateRegex>
<rich:validator />
</h:inputText>
<rich:message for="inputTextSC"/>
</rich:column>
Run Code Online (Sandbox Code Playgroud)
但它不能按我的意愿工作:(请帮助我
我有ap:outputPanel,如果我有一个带有数据的Java对象,我想渲染它.如果对象为null,我不想渲染面板.
<h:form id="treeform">
<p:outputPanel id="outputComponent" rendered="#{TreeViewController.compProfile}">
<div>
.........
</div>
</p:outputPanel>
</h:form>
public boolean getCompProfile()
{
if (cd == null)
{
return false;
}
else
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到代码工作正常.如果对象为null,则布尔值为false,并且不显示面板.但是我发现的问题是,当我再次进行AJAX调用时,无论Java对象是否为null,布尔值总是为false.我可以在AJAX调用之后以某种方式配置p:outputPanel以检查#{TreeViewController.compProfile}属性是否呈现面板.
jsf ×10
java ×2
primefaces ×2
ajax ×1
javabeans ×1
javascript ×1
jsf-1.2 ×1
jsf-2 ×1
layout ×1
render ×1
security ×1
spring ×1
validation ×1
xss ×1