我刚刚开始进入Java世界的大门.在过去的3年里,我一直在用C#编程,并且已经做了大约3个月的ASP.Net MVC.我非常喜欢它,但我需要Windows才能运行最新最好的库这一事实有点让人反省......另外我认为学习另一种语言有助于理解概念,因为你得到了一个比较.
我想学习JSP/MVC.我想知道它是否与ASP.Net MVC类似,如果我可以编写JSP/MVC Web应用程序而不使用其他框架(如Spring)来开始.
另外,哪个是从C#背景学习JSP/MVC的更好方法?
欢迎任何建议.提前致谢!
我在Facelets上使用JSF2.
我<ui:param>在页面中定义了一个:
<ui:composition template="/WEB-INF/templates/ui.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:param name="title" value="OnAir WebDemo" />
...
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
在ui.xhtml模板中我有:
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jstl/core"
>
<c:if test="#{not empty title}">
<h1>#{title}</h1>
</c:if>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,<c:if test>似乎总是评估true,如果<ui:param>没有指定.如何更改代码,以便在未指定时<c:if test>实际评估?false<ui:param>
我有一个Facelets视图如下:
<h:form id="f1">
<p:panelGrid id="p1" columns="2">
<p: inputText value="Distance Travelled::/><p:inputText value="#{airTransportUsage.distance}" immediate="true"
required="true" requiredMessage="Distance Travelled Field cannot be left blank.."
converterMessage="Distance Travelled must be a number"
validatorMessage="Distance Travelled must be a valid number.."
id="dis">
<f:validateLongRange minimum="1"/>
</p:inputText>
<p:commandButton value="Reset" action="#{airTransportUsage.reset}" update=":f1:p1" />
</p:panelGrid>
</h:form>
Run Code Online (Sandbox Code Playgroud)
单击重置按钮时,由于验证,永远不会执行相应的方法.我无法使用immediate="true"我的重置按钮,因为它会产生一些其他问题.
我正在使用Eclipse Kepler,版本= 4.3.0(尝试使用版本= 3.7.0).我尝试使用javax.faces-2.2.5.jar和javax.faces-2.2.1.jar.
我遵循的步骤:文件 - >新建 - >动态Web项目 - >动态Web模块版本 - 2.5(也尝试使用3.0),配置 - JavaServerFaces v1.2Project - >下一步 - >下一步 - >下一步 - > JSF实现库 - 添加了javax.faces-2.2.5.jar - >完成.
项目创建后:右键单击项目名称 - >属性 - >项目构面:动态Web模块 - 2.5 Java - 1.5 Javascript - 1.0 Java服务器面 - 1.2
我甚至做了:Window> Preferences> General> Content Types> Text> JSP然后将*.xhtml添加为文件关联并将默认编码设置为UTF-8.
另外,做了帮助 - >检查更新和更新eclipse.
完成所有这些操作后,当我右键单击Web Content - > New时,没有创建XHTML页面的选项.
如果我错过了什么,请建议.
在JSF 2.0 Facelets模板中调用list.size()的语法是什么(例如,使用h:outputText元素)?
例如,以下代码段:
<h:form id="levelone">
<h:inputText id="leveltwo" value="Test" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
生成以下标记:
<form id="levelone" name="levelone" method="post" action="/test/testPage.html"
enctype="application/x-www-form-urlencoded">
<input id="levelone:leveltwo" type="text" name="levelone:leveltwo"
value="Test" />
</form>
Run Code Online (Sandbox Code Playgroud)
是否可以更改自动生成的ID以使用与冒号不同的分隔符?
例如,我想改变
levelone:leveltwo
Run Code Online (Sandbox Code Playgroud)
至
levelone-leveltwo
Run Code Online (Sandbox Code Playgroud)
我们在webapp中使用Mojo JavaScript应用程序框架,它似乎不喜欢id中的冒号.
我有一个客户想要使用JSF2,他们喜欢XHTML现在是默认的(Facelets).
但是,他们的JSF1.x代码库中有大量的"遗留"JSP.
我知道这可能不太可取,但是有可能在JSF2中支持两者的混合,至少在他们移植的过渡期间吗?
我知道可以在JSF1.x中混合使用两者,但我在JSF2中找不到任何关于此的信息.
我用谷歌搜索过,但自然所有JSF2都集中在Facelets上.我对混音的简短尝试(我不是JSF的专家!)导致了失败.
wrt 如何使用f:viewParam对GET请求执行操作?
<f:metadata>
<f:viewParam name="id" value="#{tInputBean.id}" />
<f:event type="preRenderView" listener="#{tInputBean.init}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
我很想知道a preRenderView f:event是否放在f:metadata中是否重要.我已经检查了Java EE6教程,Java Server Faces 2.0完整参考和Core JSF2,并且没有一个在f:metadata中有f:event的例子,但我在网上看到了很多像这样的例子.
JSF2 Compl.Ref说p.540
f:metadata标记封装了用于指定Facelet视图的元数据的元素集,因此必须是f:view标记的子元素,并且可能不会出现在模板中.从JSF2.0开始,此标记的唯一目的是封装f:viewParam标记.
在f:metadata中放置f:事件(通常用于支持f:viewParam)是否具有特殊含义,或者仅仅是为了帮助将它与视觉/逻辑上的f:viewParam一起分组?
我有JSF 2.2,PrimeFaces 5.0 Web应用程序.
在我的页面上,我需要有条件地设置<ui:param/>.问题是标准的三元运算符是不够的,因为我有两个以上的选项可供选择.此单页用作两种类型用户的编辑和创建页面:普通用户和医生.
这是我尝试过的:
<ui:param name="edit_title"
value="#{empty dto.id ?
(bean.isPhysician ? msg.physicianNewTitle : msg.userNewTitle) :
(bean.isPhysician ? msg.physicianEditTitle : msg.userEditTitle)}" />
Run Code Online (Sandbox Code Playgroud)
结果显示错误的标题,什么时候dto.id是空的,bean.isPhysician是假的,我找不到问题或更好的解决方案.试图像在这里说的那样有条件地设置它,但是由于某种原因它不起作用.
有谁知道如何解决这种麻烦?
每个有用的答案都受到高度赞赏和评价.
谢谢.